मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक अन्य संख्या k है। यदि हम इंडेक्स k से शुरू करते हैं और किसी भी इंडेक्स i पर, हम बाएं या दाएं ठीक nums[i] चरण जा सकते हैं। हमें जांचना है कि क्या हम सूची के अंत तक पहुंच सकते हैं या नहीं।
उदाहरण के लिए, यदि इनपुट है nums = [0, 0, 2, 1, 3, 3, 1, 1], k = 2, तो आउटपुट होगा True, क्योंकि यदि हम इंडेक्स 2 से शुरू करते हैं, तो इंडेक्स 4 पर कूदते हैं और फिर अंतिम इंडेक्स 7 पर कूदते हैं।
हल करने के चरण
n:=numsका आकार।visited:= आकारnकी सूची, 0 से भरी हुई।tovisit:= आकार 1 की सूची, जिसमेंkडाला गया हो।- जब तक
tovisitका आकार 0 से बड़ा है:i:=tovisitका अंतिम तत्व, और इसेtovisitसे हटाएं।- यदि
i,n-1के समान है, तोTrueलौटाएं। - यदि
visited[i]1 के समान नहीं है, तो:visited[i] := 1up := i + nums[i]dn := i - nums[i]- यदि
up < n, तोupकोtovisitके अंत में डालें। - यदि
dn >= 0, तोdnकोtovisitके अंत में डालें।
Falseलौटाएं।
उदाहरण
class Solution:
def solve(self, nums, k):
n = len(nums)
visited = [0] * n
tovisit = [k]
while len(tovisit) > 0:
i = tovisit.pop()
if i == n-1:
return True
if visited[i] != 1:
visited[i] = 1
up = i + nums[i]
dn = i - nums[i]
if up < n:
tovisit.append(up)
if dn >= 0:
tovisit.append(dn)
return False
ob = Solution()
nums = [0, 0, 2, 1, 3, 3, 1, 1]
k = 2
print(ob.solve(nums, k))
इनपुट
[0, 0, 2, 1, 3, 3, 1, 1], 2
आउटपुट
True