Skip to content
On this page

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
};

技术文档集合