ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে যেখানে প্রতিটি সংখ্যা দেখায় যে আমরা সর্বোচ্চ কত লাফ দিতে পারি; আমাদের পরীক্ষা করতে হবে যে আমরা সূচক 0 থেকে শুরু করে শেষ সূচকে পৌঁছাতে পারি কি না।
সুতরাং, যদি ইনপুটটি nums =[2,5,0,2,0] এর মত হয়, তাহলে আউটপুট হবে True, যেহেতু আমরা সূচক 0 থেকে 1 এ যেতে পারি, তারপর সূচক 1 থেকে শেষ পর্যন্ত যেতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব−
-
n :=সংখ্যার আকার
-
arr :=n আকারের একটি অ্যারে এবং মিথ্যা দিয়ে পূরণ করুন
-
arr[n - 1] :=সত্য
-
n - 2 থেকে 0 রেঞ্জে i এর জন্য, 1 দ্বারা হ্রাস করুন, করুন
-
arr[i] :=সত্য যদি arr[index i + 1 থেকে i + nums[i]] এর যে কোনো একটি সত্য হয়
-
-
ফেরত 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