ধরুন আমাদের কাছে সংখ্যা নামক একটি তালিকা আছে এবং আমরা তালিকার সর্বাধিক একটি উপাদান মুছে ফেলতে পারি। আমাদের সর্বাধিক সংখ্যক সাবলিস্ট খুঁজে বের করতে হবে যাতে ফলাফল তালিকার সর্বোচ্চ এবং সর্বনিম্ন উভয় মানই থাকে।
সুতরাং, ইনপুট যদি nums =[3, 2, 6, 2, 4, 10] এর মত হয়, তাহলে আউটপুট হবে 8, যেমন আমরা 10 সরিয়ে দিলে আমরা পাব [3, 2, 6, 2, 4] এবং আটটি সাবলিস্ট রয়েছে যেখানে এটি সর্বোচ্চ এবং সর্বনিম্ন উভয়ই রয়েছে −
-
[২, ৬]
-
[6, 2]
-
[২, ৬, ২]
-
[৩, ২, ৬]
-
[৬, ২, ৪]
-
[২, ৬, ২, ৪]
-
[৩, ২, ৬, ২]
-
[৩, ২, ৬, ২, ৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন চেক () সংজ্ঞায়িত করুন। এটি lst লাগবে
-
mn :=lst-এর সর্বনিম্ন, mx :=lst-এর সর্বোচ্চ
-
min_pos :=null, max_pos :=শূন্য
-
ret :=0
-
প্রতিটি সূচক i এবং lst-এ মান সংখ্যার জন্য, করুন
-
যদি সংখ্যা mn এর সমান হয়, তাহলে
-
min_pos :=i
-
-
যদি num mx এর মত হয়, তাহলে
-
max_pos :=i
-
-
যদি min_pos নাল হয় বা max_pos নাল হয়, তাহলে
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
ret :=ret + সর্বনিম্ন min_pos এবং (max_pos + 1)
-
-
রিটার্ন রিটার্ন
-
মূল পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
যদি সংখ্যার আকার <=1, তাহলে
-
সংখ্যার রিটার্ন সাইজ
-
-
ret :=চেক(সংখ্যা)
-
প্রতিটি rem_cand-এর জন্য [সর্বনিম্ন সংখ্যা, সর্বোচ্চ সংখ্যা], করুন
-
যদি rem_cand এর উপস্থিতি 1 হয়, তাহলে
-
idx :=সংখ্যায় rem_cand এর সূচক
-
ret :=ret এবং চেকের সর্বোচ্চ (সংখ্যা[সূচিপত্র 0 থেকে আইডিএক্স - 1] সংযুক্ত সংখ্যা [সূচী আইডিএক্স + 1 থেকে শেষ পর্যন্ত]
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution: def solve(self, nums): if len(nums) <= 1: return len(nums) def check(lst): mn, mx = min(lst), max(lst) min_pos, max_pos = None, None ret = 0 for i, num in enumerate(lst): if num == mn: min_pos = i if num == mx: max_pos = i if min_pos is None or max_pos is None: continue ret += min(min_pos, max_pos) + 1 return ret ret = check(nums) for rem_cand in [min(nums), max(nums)]: if nums.count(rem_cand) == 1: idx = nums.index(rem_cand) ret = max(ret, check(nums[:idx] + nums[idx + 1 :])) return ret ob = Solution() nums = [3, 2, 6, 2, 4, 10] print(ob.solve(nums))
ইনপুট
[3, 2, 6, 2, 4, 10]
আউটপুট
8