Created
April 2, 2025 04:26
-
-
Save SuryaPratapK/855d758237a91e0a6e6b0f9367ecf861 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
#define ll long long | |
public: | |
long long maximumTripletValue(vector<int>& nums) { | |
int n = nums.size(); | |
//Step-1: Find right_max for all indices | |
vector<int> right_max(n); | |
int max_val = nums[n-1];//last element | |
for(int i=n-2;i>0;--i){ | |
right_max[i] = max_val; | |
max_val = max(max_val,nums[i]); | |
} | |
//Step-2: Find max_triplet | |
ll max_triplet = 0; | |
max_val = nums[0]; | |
for(int i=1;i<n-1;++i){ | |
max_triplet = max<ll>(max_triplet,(1LL*max_val-nums[i])*right_max[i]); | |
max_val = max(max_val,nums[i]); | |
} | |
return max_triplet; | |
} | |
}; | |
class Solution { | |
#define ll long long | |
public: | |
long long maximumTripletValue(vector<int>& nums) { | |
int n=nums.size(); | |
ll max_diff = 0; | |
ll max_left = 0; | |
ll max_triplet = 0; | |
for(int i=0;i<n;++i){ | |
max_triplet = max<ll>(max_triplet,1LL*max_diff*nums[i]); | |
max_diff = max<ll>(max_diff,(max_left-nums[i])); | |
max_left = max<ll>(max_left,nums[i]); | |
} | |
return max_triplet; | |
} | |
}; | |
/* | |
//JAVA | |
class Solution { | |
public long maximumTripletValue(int[] nums) { | |
int n = nums.length; | |
// Step-1: Find right_max for all indices | |
int[] rightMax = new int[n]; | |
int maxVal = nums[n - 1]; // last element | |
for (int i = n - 2; i > 0; --i) { | |
rightMax[i] = maxVal; | |
maxVal = Math.max(maxVal, nums[i]); | |
} | |
// Step-2: Find max_triplet | |
long maxTriplet = 0; | |
maxVal = nums[0]; | |
for (int i = 1; i < n - 1; ++i) { | |
maxTriplet = Math.max(maxTriplet, (long)(maxVal - nums[i]) * rightMax[i]); | |
maxVal = Math.max(maxVal, nums[i]); | |
} | |
return maxTriplet; | |
} | |
} | |
// Alternative Java Solution (Optimized Space) | |
class Solution { | |
public long maximumTripletValue(int[] nums) { | |
int n = nums.length; | |
long maxDiff = 0; | |
long maxLeft = 0; | |
long maxVal = 0; | |
for (int i = 0; i < n; ++i) { | |
maxVal = Math.max(maxVal, maxDiff * nums[i]); | |
maxDiff = Math.max(maxDiff, maxLeft - nums[i]); | |
maxLeft = Math.max(maxLeft, nums[i]); | |
} | |
return maxVal; | |
} | |
} | |
#Python | |
class Solution: | |
def maximumTripletValue(self, nums: List[int]) -> int: | |
n = len(nums) | |
# Step-1: Find right_max for all indices | |
right_max = [0] * n | |
max_val = nums[-1] # last element | |
for i in range(n - 2, 0, -1): | |
right_max[i] = max_val | |
max_val = max(max_val, nums[i]) | |
# Step-2: Find max_triplet | |
max_triplet = 0 | |
max_val = nums[0] | |
for i in range(1, n - 1): | |
max_triplet = max(max_triplet, (max_val - nums[i]) * right_max[i]) | |
max_val = max(max_val, nums[i]) | |
return max_triplet | |
# Alternative Python Solution (Optimized Space) | |
class Solution: | |
def maximumTripletValue(self, nums: List[int]) -> int: | |
max_diff = 0 | |
max_left = 0 | |
max_val = 0 | |
for num in nums: | |
max_val = max(max_val, max_diff * num) | |
max_diff = max(max_diff, max_left - num) | |
max_left = max(max_left, num) | |
return max_val | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment