मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, संख्याओं के अनुक्रम की चौड़ाई अनुक्रम में अधिकतम और न्यूनतम संख्या के बीच के अंतर के रूप में है। हमें अंकों के बाद के सभी अनुक्रमों की चौड़ाई का योग ज्ञात करना है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9+7 से संशोधित करें।
इसलिए, यदि इनपुट संख्या =[7, 4, 9] की तरह है, तो आउटपुट 15 होगा, क्योंकि हमारे पास इसके बाद के क्रम हैं:[7], [4], [9], [7, 4], [ 7, 9], [4, 9], [7, 4, 9] और तो चौड़ाई 0, 0, 0, 3, 2, 5, 5 है, इसलिए 15 प्राप्त करें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मी :=10^9 + 7
-
सूची संख्या क्रमित करें
-
उत्तर :=0
-
शक्ति:=आकार की एक सूची (संख्या + 1) और 1 के साथ भरें
-
मेरे लिए 1 से लेकर अंकों के आकार + 1 तक, करें
-
पावर [i]:=पावर [i - 1] * 2 मॉड मी
-
मैं के लिए 0 से लेकर अंकों के आकार तक, करें
-
सकारात्मक :=(शक्ति[i] - 1) * अंक [i]
-
ऋणात्मक :=(शक्ति [अंकों का आकार - i - 1] - 1) * अंक [i]
-
उत्तर:=(उत्तर + सकारात्मक - नकारात्मक) मॉड एम
-
-
-
वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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