ধরা যাক nums নামক একটি সংখ্যার তালিকা আছে, আমাদের একটি নতুন তালিকা তৈরি করতে হবে যেখানে প্রতিটি উপাদান 본래 তালিকায় সেই উপাদানের ডানে থাকা ছোট উপাদান সংখ্যা নির্দেশ করবে।
উদাহরণ: nums = [4, 5, 9, 7, 2] হলে আউটপুট [1, 1, 2, 1, 0], কারণ 4-এর ডানে ১টি ছোট উপাদান (2), 5-এর ডানে ১টি (2), 9-এর ডানে ২টি (7,2), 7-এর ডানে ১টি (2), 2-এর ডানে ০টি।
সমাধানের ধাপসমূহ
- res := নতুন তালিকা, inc := নতুন তালিকা (সর্টেড রাখতে)
- যখন nums খালি নয়:
- num := nums-এর শেষ উপাদান পপ করুন
- bisect_left দিয়ে inc-এ num ইনসার্ট করার বামোতম ইন্ডেক্স res-এ অ্যাপেন্ড করুন
- bisect.insort দিয়ে num inc-এ ইনসার্ট করুন
- res রিভার্স করে ফেরত দিন।
উদাহরণ কোড
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]