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