मान लीजिए कि हमारे पास एक 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