-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1509. Minimum Difference Between Largest and Smallest Value in Three Moves #280
Comments
In this problem, we are given an integer array Key Points
Approach
Plan
Let's implement this solution in PHP: 1509. Minimum Difference Between Largest and Smallest Value in Three Moves <?php
/**
* @param Integer[] $nums
* @return Integer
*/
function minDifference($nums) {
$n = count($nums);
// If the array has 4 or fewer elements, the difference is zero because we can remove all but one element.
if ($n <= 4) {
return 0;
}
// Sort the array to facilitate the calculation of differences after removals.
sort($nums);
// We consider removing 0, 1, 2, or 3 elements from the start or the end.
// Calculate the differences:
// 1. Remove 3 from start: nums[n-1] - nums[3]
// 2. Remove 2 from start, 1 from end: nums[n-2] - nums[2]
// 3. Remove 1 from start, 2 from end: nums[n-3] - nums[1]
// 4. Remove 3 from end: nums[n-4] - nums[0]
$differences = [
$nums[$n - 1] - $nums[3],
$nums[$n - 2] - $nums[2],
$nums[$n - 3] - $nums[1],
$nums[$n - 4] - $nums[0]
];
// Return the minimum difference.
return min($differences);
}
// Example usage:
$nums1 = [5,3,2,4];
$nums2 = [1,5,0,10,14];
$nums3 = [3,100,20];
echo minDifference($nums1) . "\n"; // Output: 0
echo minDifference($nums2) . "\n"; // Output: 1
echo minDifference($nums3) . "\n"; // Output: 0
?> Explanation:We perform the following steps to solve the problem:
Example WalkthroughExample 1:
Example 2:
Example 3:
Time Complexity
Output for ExampleExample 1:
Example 2:
Example 3:
This approach efficiently computes the minimum difference between the largest and smallest values after at most three moves by leveraging sorting and considering only four possible changes to the array. It handles edge cases and provides the result in |
Discussed in #279
Originally posted by mah-shamim August 9, 2024
Topics:
Array
,Greedy
,Sorting
You are given an integer array
nums
.In one move, you can choose one element of
nums
and change it to any value.Return the minimum difference between the largest and smallest value of
nums
after performing at most three moves.Example 1:
In the first move, change 2 to 3. nums becomes [5,3,3,4].
In the second move, change 4 to 3. nums becomes [5,3,3,3].
In the third move, change 5 to 3. nums becomes [3,3,3,3].
After performing 3 moves, the difference between the minimum and maximum is 3 - 3 = 0.
Example 2:
In the first move, change 5 to 0. nums becomes [1,0,0,10,14].
In the second move, change 10 to 0. nums becomes [1,0,0,0,14].
In the third move, change 14 to 1. nums becomes [1,0,0,0,1].
After performing 3 moves, the difference between the minimum and maximum is 1 - 0 = 1.
It can be shown that there is no way to make the difference 0 in 3 moves.
Example 3:
In the first move, change 100 to 7. nums becomes [3,7,20].
In the second move, change 20 to 7. nums becomes [3,7,7].
In the third move, change 3 to 7. nums becomes [7,7,7].
After performing 3 moves, the difference between the minimum and maximum is 7 - 7 = 0.
Constraints:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
Hint:
The text was updated successfully, but these errors were encountered: