मान लीजिए हमारे पास N धनात्मक संख्याओं की सूची nums है। हम सूची से किसी एक मान को चुन सकते हैं, और उसे किसी भी स्थिति में ले जा सकते हैं (स्वैप नहीं)। हम कोई तत्व न भी हिला सकते हैं। हमें सूची के अधिकतम संभव अंतिम पावर को ज्ञात करना है। सूची का पावर सभी सूचकांकों i पर (i+1) * value_at_index का योग है।
उदाहरण के लिए, यदि इनपुट है nums = [6, 2, 3], तो आउटपुट 26 होगा, क्योंकि हम 6 को अंत में ले जाकर [2, 3, 6] प्राप्त कर सकते हैं, पावर = (2*1) + (3*2) + (6*3) = 26।
एल्गोरिदम
P := [0] से शुरू होने वाली प्रीफिक्स सम सूची,base := 0- प्रत्येक सूचकांक
iऔर मानxके लिए:P.append(P[-1] + x)base += (i+1) * x
ans := base- प्रत्येक सूचकांक
iऔर मानxके लिए:j = 0 से len(A)तक:ans = max(ans, base + P[i] - P[j] - (i - j) * x)
ansवापस करें
उदाहरण
class Solution:
def solve(self, A):
P = [0]
base = 0
for i, x in enumerate(A, 1):
P.append(P[-1] + x)
base += i * x
ans = base
for i, x in enumerate(A):
for j in range(len(A) + 1):
ans = max(ans, base + P[i] - P[j] - (i - j) * x)
return ans
ob = Solution()
nums = [6, 2, 3]
print(ob.solve(nums))
इनपुट
[6, 2, 3]
आउटपुट
26