美文网首页
LeetCode164. 最大间距(排序)JS

LeetCode164. 最大间距(排序)JS

作者: 椰果粒 | 来源:发表于2019-05-22 22:16 被阅读0次
/**
 * @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])
}

相关文章

网友评论

      本文标题:LeetCode164. 最大间距(排序)JS

      本文链接:https://www.haomeiwen.com/subject/ulwpzqtx.html