1. 程式人生 > >隨筆-最大間距/陣列中相鄰元素的最大差值

隨筆-最大間距/陣列中相鄰元素的最大差值

題目:給定一個無序的陣列,找出陣列在排序之後,相鄰元素之間最大的差值。

如果陣列元素個數小於 2,則返回 0。

示例 1:

輸入: [3,6,9,1]
輸出: 3
解釋: 排序後的陣列是 [1,3,6,9], 其中相鄰元素 (3,6) 和 (6,9) 之間都存在最大差值 3。
示例 2:

輸入: [10]
輸出: 0
解釋: 陣列元素個數小於 2,因此返回 0。
說明:

你可以假設陣列中所有元素都是非負整數,且數值在 32 位有符號整數範圍內。
請嘗試線上性時間複雜度和空間複雜度的條件下解決此問題。

思路:下面程式碼就是普通的快排外加O(n)時間複雜度的比較解法,哪位大佬如有更巧妙解法,請留言!

class Solution {
    public int maximumGap(int[] nums) {
        if(nums.length<2){
            return 0;
        }
        Arrays.sort(nums);
        int sum=0;
        int i=1;
        while(i<nums.length){
            int sum1=nums[i]-nums[i-1];
            if(sum1>sum){
                sum=sum1;
            }else{
                i++;
            }
        }
        return sum;
    }
}