给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。
如果数组元素个数小于 2,则返回 0。
我的解法:利用Arrays.sort()对数组进行排序,然后遍历数组比较两两比较元素值的差值,保存差值的最大值。
时间复杂度:O(nlogn),空间复杂度:O(logn)
class Solution {
public int maximumGap(int[] nums) {
Arrays.sort(nums);
int max = 0;
for (int i = 1; i < nums.length; i++) {
int gap = nums[i] - nums[i-1];
if (max < gap) {
max = gap;
}
}
return max;
}
}
使用计数排序、桶排序可以在线性时间复杂度和空间复杂度的条件下解决此问题