/**
* @description 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。
* @param {*} arr 无序数组
*
*
* 执行用时 : 292 ms, 在Maximum Gap的JavaScript提交中击败了43.21% 的用户
内存消耗 : 34.8 MB, 在Maximum Gap的JavaScript提交中击败了61.58% 的用户
*/
var maximumGap = function(arr) {
let len = arr.length
if(len < 2) return 0
for(let i=len-1, 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
}
}
}
// 或者排序
// arr.sort(); // 但是这种方式性能不高,因为重复遍历了一次,可以在排序的过程中知道
// 最大差值
let max = 0;
for(let k=0; k<len-1; k++){
max = arr[k+1]-arr[k]>max ? arr[k+1]-arr[k] : max
}
return max
};
/**
*
* @desc 在冒泡排序的过程中
*
*/
var maximumGap = function(arr) {
let len = arr.length-1
let max = 0; // 最大相差
if(len < 1) return 0
// 冒泡排序
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) {
max = arr[i+1]-arr[i]>max ? arr[i+1]-arr[i] : max;
}
}
return Math.max(max, arr[1] - arr[0])
}
网友评论