ধরুন আমাদের কাছে ক্যান্ডি নামক সংখ্যার একটি তালিকা আছে এবং কেউ তার বন্ধুর বিরুদ্ধে একটি গেম খেলছে। প্রতিটি রাউন্ডে, একজন খেলোয়াড় একই মান সহ পরপর দুটি ক্যান্ডি অপসারণ করতে পারে। এবং যে একটি ক্যান্ডি তুলতে পারে না সে হেরে যায় এবং সেই প্লেয়ার1 প্রথমে শুরু করে, আমাদের চেক করতে হবে প্লেয়ার1 জিতবে কি না।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[2, 2, 5], তাহলে আউটপুট হবে True, যেমন প্লেয়ার1 যদি 2s বাছাই করে তাহলে অন্য প্লেয়ার কোনো ক্যান্ডি বাছাই করতে পারবে না।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
-
স্ট্যাক :=একটি নতুন স্ট্যাক
-
পালা :=0
-
প্রতিটি সংখ্যার জন্য, করুন
-
যদি স্ট্যাক খালি না হয় এবং স্ট্যাকের উপরের অংশটি সংখ্যার সমান হয়, তাহলে
-
স্ট্যাক থেকে পপ
-
turns :=turns + 1
-
-
অন্যথায়,
-
স্ট্যাকের মধ্যে সংখ্যা পুশ করুন
-
-
-
বাঁক বিজোড় হলে সত্য ফেরত দিন অন্যথায় মিথ্যা
উদাহরণ
class Solution: def solve(self, nums): stack = [] turns = 0 for num in nums: if stack and stack[-1] == num: stack.pop() turns += 1 else: stack.append(num) return bool(turns & 1) ob = Solution() nums = [2, 2, 5] print(ob.solve(nums))
ইনপুট
[2, 2, 5]
আউটপুট
True