在Python中找到给定数组中的所有良好索引
假设我们有一个数字数组A,我们必须找到该数组的所有索引,以便从数组中删除第ith个元素后,该数组将成为一个好的数组。我们必须记住-
好的数组是一个元素等于所有其他元素之和的数组。
基于1的索引将在此处使用。
因此,如果输入类似于[10,4,6,2],那么输出将为[1,4],就像我们删除A [1]时,数组看起来像[4,6,2]一样,很好,因为6 = 4 + 2。如果我们删除A [4],该数组将看起来像[10,4,6],这也很好,因为10 = 4 + 6。
为了解决这个问题,我们将遵循以下步骤-
n:= A的大小
加:= 0
my_map:=新映射
对于0到n范围内的i,执行
my_map [A [i]]:= my_map [A [i]] + 1
加:=加+ A [i]
对于0到n范围内的i,执行
k:= k / 2
如果k在my_map中,则
显示我+1
如果(A [i]与k相同,且my_map [k]> 1]或(A [i]与k不相同),则
k:=加-A [i]
如果k mod 2与0相同,则
示例
让我们看下面的实现以更好地理解-
from collections import defaultdictdef find_indices(A):
n = len(A)
add = 0
my_map = defaultdict(lambda:0)
for i in range(n):
my_map[A[i]] += 1
add += A[i]
for i in range(n):
k = add - A[i]
if k % 2 == 0:
k = k >> 1
if k in my_map:
if ((A[i] == k and my_map[k] > 1) or (A[i] != k)):
print((i + 1))
A = [10, 4, 6, 2]
find_indices(A)
输入值
[10, 4, 6, 2]
输出结果
14
以上是 在Python中找到给定数组中的所有良好索引 的全部内容, 来源链接: utcz.com/z/351518.html