मान लीजिए हमारे पास 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]
यदि val my_map में नहीं है, तो:
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 के समान है, तो:
कुंजी प्रदर्शित करें
लूप से बाहर निकलें
maximum + count प्रदर्शित करें
उदाहरण (पायथन)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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