Appearance
164. 最大间距
原题链接:LeetCode 164. 最大间距
题目描述
给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。
您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。
示例 1:
输入: nums = [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9]*, *其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。
示例 2:
输入: nums = [10] 输出: 0 解释: 数组元素个数小于 2,因此返回 0。
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 109
难度: Medium
题解代码
javascript
/**
* @param {number[]} nums
* @return {number}
*/
const maximumGap = nums => {
if (nums.length === 1) return 0
if (nums.length === 2) {
return Math.abs(nums[0] - nums[1])
}
let max = 0
for(let i = nums.length - 1, temp; i > 0; i--) {
for (let j = 0; j < i; j++) {
// 冒泡到最后的位置去
if (nums[i] < nums[j]) {
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}
}
// 第二轮冒泡的时候才开始判断最大差值
if (i < nums.length - 1 && nums[i + 1] - nums[i] >= max) {
max = nums[i + 1] - nums[i]
}
}
return max
};