在Python中,尋找d的值以最大化陣列c[]中零的個數,其中c[i] = d*a[i] + b[i]
假設我們有兩個包含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 := 一個新的對映
count := 0
對於i從0到n,執行:
如果B[i]不等於0且A[i]不等於0,則:
val := (-1.0 * B[i]) / A[i]
如果my_map中不存在val,則:
my_map[val] := 0
my_map[val] := my_map[val] + 1
否則,當B[i]等於0且A[i]等於0時,則:
count := count + 1
maximum := 0;
對於my_map中的每個項,執行:
maximum := my_map[item]和maximum中的最大值
對於my_map中的每個鍵值對,執行:
如果值等於最大值,則:
顯示鍵
退出迴圈
顯示maximum + count
示例(Python)
讓我們來看下面的實現以更好地理解:
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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP