LeetCode 2567. Minimum Score by Changing Two Elements
You are given a?0-indexed?integer array?nums
.
The?low?score of?
nums
?is the minimum value of?|nums[i]?- nums[j]|
?over all?0 <= i < j < nums.length
.The?high?score of?
nums
?is the maximum value of?|nums[i]?- nums[j]|
?over all?0 <= i < j < nums.length
.The?score?of?
nums
?is the sum of the?high?and?low?scores of nums.
To minimize the score of?nums
, we can change the value of?at most two?elements of?nums
.
Return?the?minimum?possible?score?after changing?the value of?at most two?elements of?nums
.
Note that?|x|
?denotes the absolute value of?x
.
?
Example 1:
Input: nums = [1,4,3]
Output: 0
Explanation:?
Change value of nums[1] and nums[2] to 1 so that nums becomes [1,1,1].?
Now, the value of |nums[i] - nums[j]|
is always equal to 0, so we return 0 + 0 = 0.
Example 2:
Input: nums = [1,4,7,8,5]
Output: 3
Explanation:?
Change nums[0] and nums[1] to be 6. Now nums becomes [6,6,7,8,5].?
Our low score is achieved when i = 0 and j = 1,?
in which case |nums[i] - nums[j]
| = |6 - 6| = 0.?
Our high score is achieved when i = 3 and j = 4,?
in which case |nums[i] - nums[j]
| = |8 - 5| = 3.?
The sum of our high and low score is 3, which we can prove to be minimal.
?
Constraints:
3 <= nums.length <= 105
1 <= nums[i] <= 109
只要更改數(shù)字了,那么low數(shù)字永遠(yuǎn)就是0,剩下的就是看最大值了,
要么改變2個(gè)大的,
要么改變2個(gè)小的,
要么改變1大1小。
這三種情況,求對(duì)應(yīng)的最小值即可。
sort一下就好了。所以代碼就很短了。
Runtime:?17 ms, faster than?72.85%?of?Java?online submissions for?Minimum Score by Changing Two Elements.
Memory Usage:?56.5 MB, less than?6.59%?of?Java?online submissions for?Minimum Score by Changing Two Elements.