1509. Minimum Difference Between Largest and Smallest Value in Three Moves
Вам дан массив целых чисел nums.
За один ход вы можете выбрать один элемент массива nums и изменить его на любое значение.
Верните минимальную разницу между наибольшим и наименьшим значением в массиве nums после выполнения не более трех ходов.
Пример:
Input: nums = [5,3,2,4]
Output: 0
Explanation: We can make at most 3 moves.
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.
C# решение
сопоставлено/оригиналpublic class Solution {
public int MinDifference(int[] nums) {
int numsSize = nums.Length;
if (numsSize <= 4) return 0;
Array.Sort(nums);
int minDiff = int.MaxValue;
for (int left = 0, right = numsSize - 4; left < 4; left++, right++) {
minDiff = Math.Min(minDiff, nums[right] - nums[left]);
}
return minDiff;
}
}
C++ решение
auto-draft, проверить перед отправкой#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int MinDifference(vector<int>& nums) {
int numsSize = nums.size();
if (numsSize <= 4) return 0;
sort(nums.begin(), nums.end());
int minDiff = int.MaxValue;
for (int left = 0, right = numsSize - 4; left < 4; left++, right++) {
minDiff = min(minDiff, nums[right] - nums[left]);
}
return minDiff;
}
}
Java решение
auto-draft, проверить перед отправкойimport java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
public int MinDifference(int[] nums) {
int numsSize = nums.length;
if (numsSize <= 4) return 0;
Arrays.sort(nums);
int minDiff = int.MaxValue;
for (int left = 0, right = numsSize - 4; left < 4; left++, right++) {
minDiff = Math.min(minDiff, nums[right] - nums[left]);
}
return minDiff;
}
}
JavaScript решение
сопоставлено/оригиналvar minDifference = function(nums) {
const numsSize = nums.length
if (numsSize <= 4) return 0
nums.sort((a, b) => a - b)
let minDiff = Infinity
for (let left = 0; left < 4; left++) {
const right = numsSize - 4 + left
minDiff = Math.min(minDiff, nums[right] - nums[left])
}
return minDiff
}
Python решение
сопоставлено/оригиналclass Solution:
def minDifference(self, nums: List[int]) -> int:
numsSize = len(nums)
if numsSize <= 4:
return 0
nums.sort()
minDiff = float('inf')
for left in range(4):
right = numsSize - 4 + left
minDiff = min(minDiff, nums[right] - nums[left])
return minDiff
Go решение
сопоставлено/оригиналfunc minDifference(nums []int) int {
numsSize := len(nums)
if numsSize <= 4 {
return 0
}
sort.Ints(nums)
minDiff := int(^uint(0) >> 1) // equivalent to math.MaxInt
for left, right := 0, numsSize - 4; left < 4; left, right = left + 1, right + 1 {
if diff := nums[right] - nums[left]; diff < minDiff {
minDiff = diff
}
}
return minDiff
}
Algorithm
Инициализация: определите размер массива nums, если размер меньше или равен 4, верните 0. Отсортируйте массив nums и инициализируйте переменную minDiff очень большим числом.
Итерация по первым четырем элементам отсортированного массива: для каждого индекса left от 0 до 3 вычислите соответствующий правый индекс, разницу между элементами на этих индексах и обновите minDiff с минимальным значением.
Верните minDiff, которое хранит минимальную разницу между наибольшими и наименьшими значениями после удаления до трех элементов.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.