🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Given an unsorted array, find the maximum difference between the successive elements in its sorted form. Return 0 if the array contains less than 2 elements. **Example 1:** ~~~ Input: [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. ~~~ **Example 2:** ~~~ Input: [10] Output: 0 Explanation: The array contains less than 2 elements, therefore return 0. ~~~ **Note:** * You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range. * Try to solve it in linear time/space. ``` /** * @param {number[]} nums * @return {number} */ var maximumGap = function(arr) { if (arr.length < 2) { return 0 } let max = 0 let len = arr.length - 1 let space; for (let i = len, tmp; i > 0; i--) { for (let j = 0; j < i; j++) { tmp = arr[j]; if (tmp > arr[j + 1]) { arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } if (i < len) { space = arr[i + 1] - arr[i]; if (space > max) { max = space; } } } return Math.max(max, arr[1] - arr[0]); }; ``` ``` var maximumGap = function(arr) { if (arr.length < 2) { return 0 } // 排序 arr.sort(function(a,b){ return a-b}) // 用它来保存相邻元素的最大差值 let max = 0 for (let i = 0, len = arr.length - 1, tmp; i < len; i++) { tmp = arr[i + 1] - arr[i] if (tmp > max) { max = tmp } } return max }; ```