मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और हम सूची में किसी भी उप-सूची को एक बार में उलट सकते हैं। इस ऑपरेशन को करने के बाद, हमें
. का अधिकतम संभव मान ज्ञात करना होगा$\displaystyle\sum\limits_{i=0}^{n-2}| nums[i+1]-[nums[i]|$
इसलिए, यदि इनपुट संख्या =[2, 4, 6] की तरह है, तो आउटपुट 6 होगा, क्योंकि जब हम [4, 6] को उलटते हैं तो हमें [2, 6, 4] और मूल्य के रूप में सूची मिलेगी | 2 - 6| + |6 - 4| =6
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
यदि अंकों का आकार <=1, तो -
-
वापसी 0
-
-
उत्तर:=0
-
n :=अंकों का आकार
-
इनिशियलाइज़ करने के लिए मैं :=1, जब i
-
Ans :=ans + |nums[i] - nums[i − 1]|
-
-
मूल:=उत्तर
-
इनिशियलाइज़ i :=1 के लिए, जब i
करें -
उत्तर :=अधिकतम उत्तर और मूल − |(nums[i] − nums[i + 1]| + |nums[0] − nums[i + 1]|
-
उत्तर :=अधिकतम उत्तर और मूल − |(nums[i] − nums[i − 1]| + |nums[n − 1] - nums[i − 1]|
-
-
पीपी:=−|अंक्स[1] - अंक[0]|
-
अपराह्न :=−|अंक्स[1] - अंक[0]|
-
mp :=−|nums[1] − nums[0]|
-
मिमी :=−|अंक्स[1] - अंक[0]|
-
इनिशियलाइज़ j :=2 के लिए, जब j
-
jerror :=|nums[j + 1] - nums[j]|
-
उत्तर:=अधिकतम उत्तर और (मूल + पीपी - जेरर - अंक [जे] - अंक [जे + 1])
-
उत्तर:=अधिकतम उत्तर और (मूल + अपराह्न - जेरर - अंक [जे] + अंक [जे + 1])पी>
-
उत्तर:=अधिकतम उत्तर और (मूल + एमपी - जेरर + अंक [जे] - अंक [जे + 1])पी>
-
उत्तर:=अधिकतम उत्तर और (मूल + मिमी - जेरर + अंक [जे] + अंक [जे + 1])पी>
-
पीपी :=अधिकतम पीपी और −|nums[j] − nums[j − 1]|
-
अपराह्न :=अधिकतम अपराह्न और −|nums[j] - nums[j − 1]|
-
mp :=अधिकतम mp और −|nums[j] - nums[j − 1]|
-
मिमी :=अधिकतम मिमी और −|nums[j] − nums[j − 1]|
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; int solve(vector<int>& nums) { if (nums.size() <= 1) return 0; int ans = 0; int n = nums.size(); for (int i = 1; i < n; i++) { ans += abs(nums[i] − nums[i − 1]); } int orig = ans; for (int i = 1; i < n − 1; i++) { ans = max(ans, orig − abs(nums[i] − nums[i + 1]) + abs(nums[0] − nums[i + 1])); ans = max(ans, orig − abs(nums[i] − nums[i − 1]) + abs(nums[n − 1] − nums[i − 1])); } int pp = −abs(nums[1] − nums[0]) + nums[0] + nums[1]; int pm = −abs(nums[1] − nums[0]) + nums[0] − nums[1]; int mp = −abs(nums[1] − nums[0]) − nums[0] + nums[1]; int mm = −abs(nums[1] − nums[0]) − nums[0] − nums[1]; for (int j = 2; j < n − 1; j++) { int jerror = abs(nums[j + 1] − nums[j]); ans = max(ans, orig + pp − jerror − nums[j] − nums[j + 1]); ans = max(ans, orig + pm − jerror − nums[j] + nums[j + 1]); ans = max(ans, orig + mp − jerror + nums[j] − nums[j + 1]); ans = max(ans, orig + mm − jerror + nums[j] + nums[j + 1]); pp = max(pp, −abs(nums[j] − nums[j − 1]) + nums[j − 1] + nums[j]); pm = max(pm, −abs(nums[j] − nums[j − 1]) + nums[j − 1] − nums[j]); mp = max(mp, −abs(nums[j] − nums[j − 1]) − nums[j − 1] + nums[j]); mm = max(mm, −abs(nums[j] − nums[j − 1]) − nums[j − 1] − nums[j]); } return ans; } int main(){ vector<int> v = {2, 4, 6}; cout << solve(v); }
इनपुट
{2, 4, 6}
आउटपुट
6