ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে nums বলা হয়, ক্রমানুসারে সর্বাধিক এবং সর্বনিম্ন সংখ্যার মধ্যে পার্থক্য হিসাবে সংখ্যার ক্রমটির প্রস্থ। আমাদেরকে সংখ্যার পরবর্তী সমস্ত প্রস্থের যোগফল খুঁজে বের করতে হবে। যদি উত্তরটি খুব বড় হয় তাহলে ফলাফলটি 10^9+7 দ্বারা পরিবর্তন করুন।
সুতরাং, যদি ইনপুটটি nums =[7, 4, 9] এর মত হয়, তাহলে আউটপুট 15 হবে, যেমন আমাদের পরবর্তীগুলি যেমন:[7], [4], [9], [7, 4], [ 7, 9], [4, 9], [7, 4, 9] এবং তাই প্রস্থ 0, 0, 0, 3, 2, 5, 5, তাই 15 পান৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
m :=10^9 + 7
-
তালিকার সংখ্যাগুলি সাজান
-
উত্তর :=0
-
power :=আকারের একটি তালিকা (সংখ্যা + 1) এবং 1 দিয়ে পূরণ করুন
-
আমি রেঞ্জ 1 থেকে সংখ্যা + 1 এর আকারের জন্য, করুন
-
power[i] :=power[i - 1] * 2 mod m
-
আমি 0 থেকে সংখ্যার আকারের মধ্যে, কর
-
ধনাত্মক :=(শক্তি[i] - 1) * সংখ্যা[i]
-
ঋণাত্মক :=(শক্তি[সংখ্যার আকার - i - 1] - 1) * সংখ্যা[i]
-
উত্তর :=(উত্তর + ইতিবাচক - নেতিবাচক) মোড m
-
-
-
উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution: def solve(self, nums): m = 10**9 + 7 nums.sort() ans = 0 power = [1] * (len(nums) + 1) for i in range(1, len(nums) + 1): power[i] = power[i - 1] * 2 % m for i in range(0, len(nums)): positive = (power[i] - 1) * nums[i] negative = (power[len(nums) - i - 1] - 1) * nums[i] ans = (ans + positive - negative) % m return ans ob = Solution() nums = [7, 4, 9] print(ob.solve(nums))
ইনপুট
[7, 4, 9]
আউটপুট
15