ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে nums বলা হয় এবং আরেকটি সংখ্যা k। যদি আমরা সূচী k এবং যেকোন সূচক i থেকে শুরু করি, আমরা সঠিক সংখ্যা[i] ধাপে বাম বা ডানে যেতে পারি। আমরা তালিকার শেষ পর্যন্ত পৌঁছাতে পারি কি না তা পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি nums =[0, 0, 2, 1, 3, 3, 1, 1] k =2 এর মত হয়, তাহলে আউটপুটটি True হবে, যেমন আমরা সূচী 2 থেকে শুরু করি, তারপর সূচী 4-এ যান। এবং তারপর শেষ সূচক 7 এ ঝাঁপ দাও।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব−
-
n:=সংখ্যার আকার
-
পরিদর্শন করেছেন :=আকার n এর একটি তালিকা এবং 0
দিয়ে পূরণ করুন -
tovisit :=আকার 1 এর একটি তালিকা, এবং এতে k ঢোকান
-
পরিদর্শন করার সময় <0, করুন
-
i:=tovisit থেকে শেষ উপাদান এবং tovisit থেকে মুছে দিন
-
যদি আমি n-1 এর মত হয়, তাহলে
-
রিটার্ন ট্রু
-
-
যদি পরিদর্শন করা হয় [i] 1 এর মত না হয়, তাহলে
-
পরিদর্শন করেছেন[i]:=1
-
আপ:=i + সংখ্যা[i]
-
down:=i - nums[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