ধরুন আমাদের কাছে সংখ্যার স্তুপ আছে; স্ট্যাকের মানগুলি জোড়া অনুসারে ধারাবাহিক কিনা তা আমাদের পরীক্ষা করতে হবে। এই জোড়া বৃদ্ধি বা হ্রাস হতে পারে. স্ট্যাকের একটি বিজোড় সংখ্যক মান থাকলে, শীর্ষ উপাদানটি একটি জোড়ার বাইরে থাকে। এবং চেক করার পরে আমাদের মূল স্ট্যাক সামগ্রীটি ধরে রাখা উচিত।
এই সমস্যাটি সমাধান করার জন্য, আমরা পুশ, পপ নামে স্ট্যাকের উপর তিনটি অপারেশন ব্যবহার করতে পারি এবং স্ট্যাকটি খালি কিনা তা পরীক্ষা করতে পারি।
সুতরাং, যদি ইনপুটটি stk =[5, 6, -4, -5, 12, 11, 6, 7, 22] এর মতো হয়, তাহলে আউটপুটটি True হবে যেমন শীর্ষ উপাদান 22 সরানোর পরে, জোড়াগুলি হল [(5) , 6), (-4, -5), (12, 11), (6, 7)] সবগুলোই পরপর।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=stk থেকে পপ উপাদান এবং temp এ পুশ করুন
- স্ট্যাক stk সাফ করুন
- পতাকা :=সত্য
- যখন temp এর সাইজ> 1, do
- আইটেম_প্রথম, আইটেম_সেকেন্ড :=তাপমাত্রার শীর্ষ দুটি উপাদান এবং সেগুলি পপ করুন
- যদি |আইটেম_প্রথম - আইটেম_সেকেন্ড| 1 নয়, তারপর
- পতাকা :=মিথ্যা
- stk-এ item_first এবং item_second ঠেলে দিন
- যদি তাপমাত্রার আকার 1 এর মতো হয়, তাহলে
- stk তে তাপমাত্রার শীর্ষে ঠেলে
- রিটার্ন পতাকা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
def solve(stk): temp = stk[::-1] stk.clear() flag = True while len(temp) > 1: item_first = temp[-1] temp.pop() item_second = temp[-1] temp.pop() if abs(item_first - item_second) != 1: flag = False stk.append(item_first) stk.append(item_second) if len(temp) == 1: stk.append(temp[-1]) return flag stk = [5, 6, -4, -5, 12, 11, 6, 7, 22] print(solve(stk))
ইনপুট
[5, 6, -4, -5, 12, 11, 6, 7, 22]
আউটপুট
True