Giả sử chúng ta có hai mảng A và B gồm n số nguyên, bây giờ hãy xem xét một mảng C, trong đó số thứ i sẽ là d * A [i] + B [i] và đây d là số thực bất kỳ. Ta phải tìm d sao cho mảng C có tối đa số 0. Đồng thời trả về số lượng số không.
Vì vậy, nếu đầu vào là A =[15, 40, 45] và B =[4, 5, 6], thì đầu ra sẽ là d =-0.266666, số không sẽ là 1
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
n:=kích thước của A
-
my_map:=một bản đồ mới
-
đếm:=0
-
đối với tôi trong phạm vi từ 0 đến n, hãy thực hiện
-
nếu B [i] không giống 0 và A [i] không giống 0 thì
-
val:=(- 1,0 * B [i]) / A [i]
-
nếu val không có trong my_map, thì
-
my_map [val]:=0
-
-
my_map [val]:=my_map [val] + 1
-
-
ngược lại khi B [i] giống 0 và A [i] giống 0 thì
-
count:=count + 1
-
-
-
tối đa:=0;
-
đối với mỗi mục trong my_map, thực hiện
-
tối đa:=tối đa my_map [item], tối đa
-
-
đối với mỗi khóa, giá trị trong my_map, thực hiện
-
nếu các giá trị bằng với giá trị tối đa thì
-
các phím hiển thị
-
đi ra từ vòng lặp
-
-
-
hiển thị tối đa + số lượng
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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)
Đầu vào
[15, 40, 45], [4,5,6]
Đầu ra
d = -0.26666666666666666 Number of 0s: 1