ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমরা একটি নতুন তালিকা তৈরি করব যেখানে নতুন তালিকার প্রতিটি উপাদান হল মূল ইনপুট তালিকার সেই উপাদানটির ডানদিকে ছোট ছোট উপাদানগুলির সংখ্যা৷
সুতরাং, ইনপুট যদি nums =[4, 5, 9, 7, 2] এর মত হয়, তাহলে আউটপুট হবে [1, 1, 2, 1, 0], কারণ 4-এর ডানদিকে 1টি ছোট উপাদান রয়েছে। 5-এর ডানদিকে 1টি ছোট উপাদান, 9-এর ডানদিকে 2টি ছোট উপাদান, 7-এর ডানদিকে 1টি ছোট উপাদান, 2-এর ডানদিকে আরও ছোট উপাদান রয়েছে৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=একটি নতুন তালিকা, inc :=একটি নতুন তালিকা
-
সংখ্যাগুলি খালি না থাকার সময়, করুন
-
num :=nums থেকে শেষ উপাদান মুছে দিন
-
res এর শেষে inc-এ num সন্নিবেশ করার জন্য বাম সূচকটি সন্নিবেশ করুন
-
inc তে num সন্নিবেশ করার পরে সাজানো তালিকা
-
-
একটি তালিকা রিটার্ন করুন [সূচী 0 থেকে শেষ পর্যন্ত]
আসুন আরও ভাল বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি—
উদাহরণ
import bisect class Solution: def solve(self, nums): res, inc = [], [] while nums: num = nums.pop() res.append(bisect.bisect_left(inc, num)) bisect.insort(inc, num) return res[::-1] ob = Solution() nums = [4, 5, 9, 7, 2] print(ob.solve(nums))
ইনপুট
[4, 5, 9, 7, 2]
আউটপুট
[1, 1, 2, 1, 0]