ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা। আমাদের প্রতিটি শিখর উপাদানের সূচী খুঁজে বের করতে হবে সংখ্যায়, আরোহী ক্রমে সাজানো। একটি শীর্ষ উপাদানের একটি সূচক i যখন এই তিনটি শর্তের সবকটিই সন্তুষ্ট হয়:1. এর ডানদিকের পরবর্তী সংখ্যা যা সংখ্যার চেয়ে আলাদা [i] উপস্থিত নয় বা সংখ্যার থেকে ছোট হতে হবে [i] 2. আগের সংখ্যা এর বাম অংশ যা সংখ্যার থেকে আলাদা [i] উপস্থিত নয় বা সংখ্যার থেকে ছোট হতে হবে [i] 3. এটির বাম পাশে বা ডান পাশে কমপক্ষে একটি সংখ্যা আছে যা সংখ্যা[i] থেকে আলাদা৷
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[5, 8, 8, 8, 6, 11, 11], তাহলে আউটপুট হবে [1, 2, 3, 5, 6], কারণ 8s এর মালভূমি হিসাবে বিবেচিত হয় শিখর [1,2,3]। এবং 11গুলি হল, [5, 6]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=সংখ্যার আকার
- উত্তর :=একটি নতুন তালিকা
- i :=0
- যখন i
- i0 :=i
- যখন i
- i :=i + 1
- যদি i0 0 না হয় বা i n না হয়, তাহলে
- উত্তর শেষে একটি (i0 থেকে i-1 তালিকা) সন্নিবেশ করুন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): n = len(nums) ans = [] i = 0 while i < n: i0 = i while i < n and nums[i] == nums[i0]: i += 1 if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]): if i0 != 0 or i != n: ans.extend(range(i0, i)) return ans nums = [5, 8, 8, 8, 6, 11, 11] print(solve(nums))
ইনপুট
[5, 8, 8, 8, 6, 11, 11]
আউটপুট
[1, 2, 3, 5, 6]