मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है जहां प्रत्येक संख्या अधिकतम कूद की संख्या दर्शाती है; हमें जांचना है कि क्या हम इंडेक्स 0 से शुरू करके अंतिम इंडेक्स तक पहुंच सकते हैं या नहीं।
उदाहरण के लिए, यदि इनपुट nums = [2,5,0,2,0] है, तो आउटपुट True होगा, क्योंकि हम इंडेक्स 0 से 1 तक कूद सकते हैं, फिर इंडेक्स 1 से अंत तक।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (डायनामिक प्रोग्रामिंग / ग्रीडी):
n := len(nums)।arr := [False]*nआकार n की सरणी बनाएं औरFalseसे भरें।arr[n-1] = True।iकोn-2से 0 तक घटाते हुए:arr[i] = any(arr[i+1 : i+nums[i]+1])।
arr[0]लौटाएं।
उदाहरण
class Solution: def solve(self, nums): n = len(nums) arr = [False] * n arr[n - 1] = True for i in range(n - 2, -1, -1): arr[i] = any(arr[i + 1 : i + nums[i] + 1]) return arr[0] ob = Solution() nums = [2,5,0,2,0] print(ob.solve(nums))
इनपुट
[2,5,0,2,0]
आउटपुट
True