假设我们有两个由n个整数组成的数组A和B,现在考虑一个数组C,第i个数字为d * A [i] + B [i],其中d为任意实数。我们必须找到d,使得数组C的最大数目为零。还返回零数。
因此,如果输入像A = [15,40,45]并且B = [4,5,6],那么输出将是d = -0.266666,零的个数将是1
为了解决这个问题,我们将遵循以下步骤-
n:= A的大小
my_map:=新映射
计数:= 0
对于0到n范围内的i,执行
数:=数+ 1
值:=(-1.0 * B [i])/ A [i]
如果val不在my_map中,则
my_map [val]:= my_map [val] + 1
my_map [val]:= 0
如果B [i]不等于0且A [i]不等于0,则
否则,当B [i]等于0且A [i]等于0时,则
最大:= 0;
对于my_map中的每个项目,执行
最大:= my_map [item]的最大值,最大值
对于每个键,my_map中的值,执行
显示键
从循环中出来
如果值与最大值相同,则
显示最大数量
让我们看下面的实现以更好地理解-
def find_d_zero(A, B) : n = len(A) my_map = {} count = 0 for i in range(n) : if (B[i] != 0 and A[i] != 0) : val = (-1.0 * B[i]) / A[i] if val not in my_map : my_map[val] = 0 my_map[val] += 1 elif (B[i] == 0 and A[i] == 0) : count += 1 maximum = 0; for item in my_map : maximum = max(my_map[item], maximum) for keys, values in my_map.items() : if (values == maximum) : print("d = ", keys) break print("Number of 0s: ", maximum + count) a = [15, 40, 45] b = [4, 5, 6] find_d_zero(a, b)
[15, 40, 45], [4,5,6]
输出结果
d = -0.26666666666666666 Number of 0s: 1