Input: nums =[2,4,1]Output: 6Explanation:
The possible operations are:Remove the first two elements(2+4)=6. The remaining array is[1].Remove the last two elements(4+1)=5. The remaining array is[2].Remove the first and last elements(2+1)=3. The remaining array is[4].The maximum score is obtained by removing the first two elements, resulting in a final score of 6.
Input: nums =[5,-1,4,2]Output: 7Explanation:
The possible operations are:Remove the first and last elements(5+2)=7. The remaining array is[-1,4].Remove the first two elements(5+-1)=4. The remaining array is[4,2].Remove the last two elements(4+2)=6. The remaining array is[5,-1].The maximum score is obtained by removing the first and last elements, resulting in a total score of 7.
To maximize the score, always pair the largest two numbers available, as their difference will be the largest possible at each step. This greedy approach ensures the sum of differences is maximized.
classSolution {
public:int maxScore(vector<int>& nums) {
sort(nums.rbegin(), nums.rend());
int ans =0;
for (int i =0; i < nums.size(); i +=2) {
ans += nums[i] - nums[i+1];
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
classSolution {
publicintmaxScore(int[] nums) {
Arrays.sort(nums);
int ans = 0;
for (int i = nums.length- 1; i > 0; i -= 2) {
ans += nums[i]- nums[i-1];
}
return ans;
}
}
1
2
3
4
5
6
7
classSolution:
defmaxScore(self, nums: list[int]) -> int:
nums.sort(reverse=True)
ans =0for i in range(0, len(nums), 2):
ans += nums[i] - nums[i+1]
return ans