164. Maximum Gap
Дан 배열 целых чисел nums. return максимальную разницу между двумя последовательными elementами в его отсортированной форме. Если 배열 содержит менее двух elementов, return 0.
C# 해법
매칭됨/원본public class Solution {
public int MaximumGap(int[] nums) {
if (nums == null ||
nums.Length < 2)
return 0;
Array.Sort(nums);
int maxGap = 0;
for (int i = 0; i < nums.Length - 1; i++)
maxGap = Math.Max(nums[i + 1] - nums[i], maxGap);
return maxGap;
}
}
C++ 해법
자동 초안, 제출 전 검토#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 MaximumGap(vector<int>& nums) {
if (nums == null ||
nums.size() < 2)
return 0;
sort(nums.begin(), nums.end());
int maxGap = 0;
for (int i = 0; i < nums.size() - 1; i++)
maxGap = max(nums[i + 1] - nums[i], maxGap);
return maxGap;
}
}
Java 해법
매칭됨/원본public class Solution {
public int maximumGap(int[] nums) {
if (
nums == null || nums.length < 2
) return 0;
Arrays.sort(nums);
int maxGap = 0;
for (int i = 0; i < nums.length - 1; i++) maxGap = Math.max(
nums[i + 1] - nums[i],
maxGap
);
return maxGap;
}
}
JavaScript 해법
매칭됨/원본var maximumGap = function (nums) {
if (nums == null || nums.length < 2)
return 0;
nums.sort((a, b) => a - b)
var maxGap = 0;
for (var i = 0; i < nums.length - 1; i++)
maxGap = Math.max(nums[i + 1] - nums[i], maxGap);
return maxGap;
};
Python 해법
매칭됨/원본class Solution:
def maximumGap(self, nums):
if (
nums is None or len(nums) < 2
):
return 0
nums.sort()
maxGap = 0
for i in range(len(nums) - 1):
maxGap = max(nums[i + 1] - nums[i], maxGap)
return maxGap
Go 해법
매칭됨/원본func maximumGap(nums []int) int {
if len(nums) < 2 {
return 0
}
sort.Ints(nums)
maxGap := 0
for i := 0; i < len(nums)-1; i++ {
diff := nums[i+1] - nums[i]
if diff > maxGap {
maxGap = diff
}
}
return maxGap
}
Algorithm
예제:
Input: nums = [3,6,9,1]
Output: 3
Explanation: The sorted form of the array is [1,3,6,9], either (3,6) or (6,9) has the maximum difference 3.
👨💻
알고리즘:
1️⃣
Инициализация:
Определите минимальное и максимальное значения в 배열е для расчета возможного максимального интервала (разрыва) между elementами в идеально распределенном 배열е.
Вычислите размер ведра (bucket size), необходимый для размещения всех elementов 배열а так, чтобы если 배열 был равномерно распределен, каждый ведер должен содержать хотя бы один element. Размер ведра = (max_value - min_value) / (количество elementов - 1).
2️⃣
Размещение elementов в ведрах:
Создайте ведра для хранения минимальных и максимальных значений каждого ведра. Используйте формулу для распределения каждого elementа в соответствующем ведре на основе его значения.
Игнорируйте пустые ведра при расчете максимального интервала.
3️⃣
Вычисление максимального интервала:
Пройдите через ведра и вычислите maximum интервал, сравнивая минимальное значение текущего непустого ведра с максимальным значением предыдущего непустого ведра.
maximum интервал будет наибольшей разницей между "минимальными" и "максимальными" значениями последовательных непустых ведер.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.