मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे nums कहा जाता है और दूसरा मान pos है। हमें अंकों का एक सबलिस्ट ए ढूंढना होगा जिसमें इंडेक्स पॉज़ शामिल हो (न्यूनतम ए) * (ए का आकार) अधिकतम हो और फिर मान वापस कर दें।
इसलिए, यदि इनपुट nums =[-2, 2, 5, 4] pos =3 जैसा है, तो आउटपुट 8 होगा, क्योंकि सबसे अच्छा सबलिस्ट [5, 4] है, क्योंकि (5, 4) =4 और इसका आकार 2 है हमारे पास 4 * 2 =8 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर:=ए [पॉज़], एम:=ए [पॉज़]
-
मैं:=स्थिति, जम्मू:=स्थिति
-
0 से A-1 के आकार की श्रेणी में i के लिए निम्न कार्य करें, करें
-
बाएँ:=A[i - 1] अगर i - 1>=0 अन्यथा -inf
-
दाएं:=ए [जे + 1] अगर जे + 1 <ए का आकार अन्यथा -इनफ़
-
अगर बाएँ>=दाएँ, तो
-
मैं :=मैं - 1
-
मी :=न्यूनतम मी और ए[i]
-
-
अन्यथा,
-
जे:=जे + 1
-
मी :=न्यूनतम मी और ए[जे]
-
-
उत्तर :=अधिकतम उत्तर और (m *(j - i + 1))
-
-
वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution:
def solve(self, A, pos):
NINF = float("-inf")
ans = m = A[pos]
i = pos
j = pos
for _ in range(len(A) - 1):
left = A[i - 1] if i - 1 >= 0 else NINF
right = A[j + 1] if j + 1 < len(A) else NINF
if left >= right:
i -= 1
m = min(m, A[i])
else:
j += 1
m = min(m, A[j])
ans = max(ans, m * (j - i + 1))
return ans
ob = Solution()
nums = [-2, 2, 5, 4]
pos = 3
print(ob.solve(nums, pos)) इनपुट
[-2, 2, 5, 4], 3
आउटपुट
8