একটি স্ট্যাক stk দেওয়া আছে। যাচাই করতে হবে যে স্ট্যাকের এলিমেন্টগুলো পেয়ার বানায় কি egymানTER মানের (consecutive) - বেড়তা বা কমতা পার্থক্য ১। স্ট্যাকের দৈর্ঘ্য বিজোড় হলে উপরের এলিমেন্ট বাদ দেওয়া হয়। 본래 স্ট্যাকের কন্টেন্ট অপরিবর্তিত রাখতে হবে।
উদাহরণ
ইনপুট: stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
আউটপুট: True
ব্যাখ্যা: উপরের ২২ বাদ দিয়ে পেয়ার: (5,6), (-4,-5), (12,11), (6,7) সবগুলো consecutive।
অ্যালগরিদম
- স্ট্যাকের এলিমেন্টগুলো একটি টেম্প লিস্টে রিভার্স করে রাখুন।
- মূল স্ট্যাক ক্লিয়ার করুন।
- টেম্প লিস্ট থেকে দুটি করে এলিমেন্ট পপ করুন, পার্থক্য ১ কিনা চেক করুন।
- পেয়ারগুলো আবার মূল স্ট্যাকে পুশ করুন।
- যদি একক এলিমেন্ট বaki থাকে, সেটিও পুশ করুন।
উদাহরণ কোড
def solve(stk):
temp = stk[::-1]
stk.clear()
flag = True
while len(temp) > 1:
item_first = temp.pop()
item_second = 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.pop())
return flag
stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
print(solve(stk)) # Output: True
ইনপুট
[5, 6, -4, -5, 12, 11, 6, 7, 22]
আউটপুট
True