मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक और दूसरी संख्या k कहा जाता है। यदि हम अनुक्रमणिका k से प्रारंभ करते हैं और किसी अनुक्रमणिका i पर, तो हम ठीक-ठीक अंकों [i] चरणों की संख्या से बाएँ या दाएँ जा सकते हैं। हमें यह जांचना होगा कि हम सूची के अंत तक पहुंच सकते हैं या नहीं।
इसलिए, यदि इनपुट nums =[0, 0, 2, 1, 3, 3, 1, 1] k =2 जैसा है, तो आउटपुट ट्रू होगा, जैसे कि हम इंडेक्स 2 से शुरू करते हैं, फिर इंडेक्स 4 पर जाएं और फिर अंतिम अनुक्रमणिका 7 पर जाएं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे-
-
n:=अंकों का आकार
-
देखी गई :=आकार n की सूची और 0 से भरें
-
tovisit :=आकार 1 की एक सूची, और उसमें k डालें
-
जबकि यात्रा का आकार <0, करें
-
i:=यात्रा से अंतिम तत्व और इसे यात्रा से हटा दें
-
अगर मैं n-1 के समान हूं, तो
-
सही लौटें
-
-
अगर विज़िट किया गया [i] 1 के समान नहीं है, तो
-
विज़िट किया गया[i]:=1
-
up:=i + nums[i]
-
नीचे:=मैं - अंक [i]
-
अगर ऊपर
-
यात्रा के अंत में डालें
-
अगर नीचे>=0, तो
-
यात्रा के अंत में नीचे डालें
-
-
झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें-
उदाहरण
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=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