मान लीजिए कि हमारे पास एक 2D विमान पर निर्देशांक बिंदु वाले बिंदु नामक एक सरणी है, वे x-मानों द्वारा क्रमबद्ध हैं, जहां बिंदु [i] =(x_i, y_i) इसलिए x_i
इसलिए, यदि इनपुट अंक =[[2,4], [3,1], [6,11], [7,-9]] के =1 की तरह है, तो आउटपुट 6 होगा क्योंकि पहले दो बिंदु शर्त को पूरा करें |xi - xj| <=1 अब अगर हम समीकरण की गणना करते हैं तो हमें 4+ 1 + |2 - 3| . मिलता है =6. तीसरे और चौथे अंक भी शर्त को पूरा करते हैं और 11 + -9 + |6 - 7| . का मान लौटाते हैं =3, इसलिए अधिकतम 6 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
बाएँ:=0, दाएँ:=1
-
max_value :=-inf
-
जबकि सही <अंकों का आकार, करें
-
(एक्सएल, वाईएल) :=अंक[बाएं]
-
(xr, yr) :=अंक[दाएं]
-
अंतर :=|xr - xl|
-
यदि बायाँ दाएँ के समान है, तो
-
दाएँ :=दाएँ + 1
-
-
अन्यथा जब भिन्न <=k, तब
-
मी :=yl + yr + diff
-
max_value :=max_value और m का अधिकतम
-
अगर yl>=yr - diff, तब
-
दाएँ :=दाएँ + 1
-
-
अन्यथा,
-
बाएँ :=बाएँ + 1
-
-
अन्यथा,
-
बाएँ :=बाएँ + 1
-
-
-
-
वापसी max_value
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(points, k): left, right = 0, 1 max_value = float('-inf') while right < len(points): xl, yl = points[left] xr, yr = points[right] diff = abs(xr - xl) if left == right: right += 1 elif diff <= k: m = yl + yr + diff max_value = max(max_value, m) if yl >= yr - diff: right += 1 else: left += 1 else: left += 1 return max_value points = [[2,4],[3,1],[6,11],[7,-9]] k = 1 print(solve(points, k))
इनपुट
[[2,4],[3,1],[6,11],[7,-9]], 1
आउटपुट
6