मान लीजिए हमारे पास nums नामक आइटम्स की एक लिस्ट है, हमें सबसे छोटा इंडेक्स i ढूंढना है जैसे कि i के बाईं ओर मौजूद संख्याओं का योग i के दाईं ओर मौजूद संख्याओं के योग के बराबर हो। यदि हम ऐसा कोई समाधान नहीं ढूंढ सकते, तो -1 लौटाएं।
उदाहरण के लिए, यदि इनपुट है nums = [8,2,3,6,5,2,5,9,1,2], तो आउटपुट होगा 4, क्योंकि इंडेक्स 4 के बाईं ओर के तत्वों का योग [8,2,3,6] = 19 है, और दाईं ओर मौजूद तत्वों का योग [2,5,9,1,2] = 19 भी है।
समाधान दृष्टिकोण
कुल योग की पूर्व-गणना करें, फिर लेफ्ट सम को ट्रैक करते हुए लीनियर स्कैन करें।
r = sum(nums)(राइट सम),l = 0(लेफ्ट सम)।- प्रत्येक इंडेक्स
iऔर मानxके लिए:r -= x(वर्तमान तत्व को राइट से हटाएं)।- यदि
r == l, तोiलौटाएं। l += x(वर्तमान तत्व को लेफ्ट में जोड़ें)।
- यदि नहीं मिला तो -1 लौटाएं।
पायथन कार्यान्वयन
def solve(nums):
r = sum(nums)
l = 0
for i, x in enumerate(nums):
r -= x
if r == l:
return i
l += x
return -1
nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))
इनपुट
[8,2,3,6,5,2,5,9,1,2]
आउटपुट
4