ধরুন আমাদের কাছে সংখ্যার সংখ্যার একটি তালিকা আছে, আমরা তালিকাটিকে দুটি ভাগে ভাগ করতে চাই part1 এবং part2 যাতে part1-এর প্রতিটি উপাদান part1-এর প্রতিটি উপাদানের থেকে কম বা সমান হয়। আমাদের অংশ 1 এর সবচেয়ে ছোট দৈর্ঘ্য খুঁজে বের করতে হবে যা সম্ভব (0 দৈর্ঘ্য নয়)।
সুতরাং, ইনপুট যদি nums =[3, 1, 2, 5, 4] এর মত হয়, তাহলে আউটপুট হবে 3, কারণ আমরা part1 =[3, 1, 2] এবং part2 =[5, এর মতো তালিকা ভাগ করতে পারি। 4]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- p :=ন্যূনতম সংখ্যা
- s :=0
- আমি 0 থেকে সংখ্যার আকার - 1 এর মধ্যে, কর
- যদি সংখ্যা[i] p এর মত হয়, তাহলে
- s :=i
- লুপ থেকে বেরিয়ে আসুন
- যদি সংখ্যা[i] p এর মত হয়, তাহলে
- p :=সংখ্যার সাব-লিস্টের সর্বাধিক [সূচী 0 থেকে s]
- উত্তর :=s
- এর জন্য s + 1 পরিসর থেকে সংখ্যার আকার - 1, do
- যদি সংখ্যা[i]
- উত্তর :=i
- যদি সংখ্যা[i]
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): p = min(nums) s = 0 for i in range(len(nums)): if nums[i] == p: s = i break p = max(nums[: s + 1]) ans = s for i in range(s + 1, len(nums)): if nums[i] < p: ans = i return ans + 1 nums = [3, 1, 2, 5, 4] print(solve(nums))
ইনপুট
[3, 1, 2, 5, 4]
আউটপুট
3