leetcode1

梦想与她 提交于 2019-11-30 06:23:25

5197. 最小绝对差

给你个整数数组 arr,其中每个元素都 不相同。

请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。

 

示例 1:

输入:arr = [4,2,1,3]
输出:[[1,2],[2,3],[3,4]]

示例 2:

输入:arr = [1,3,6,10,15]
输出:[[1,3]]

示例 3:

输入:arr = [3,8,-10,23,19,-4,-14,27]
输出:[[-14,-10],[19,23],[23,27]]

提示:

  • 2 <= arr.length <= 10^5
  • -10^6 <= arr[i] <= 10^6
/**
 * @param {number[]} arr
 * @return {number[][]}
 */
var minimumAbsDifference = function(arr) {
    let res = [];
    arr.sort((a, b)=>a-b);
    let c = Infinity;
    for(let i=0; i<arr.length-1; i++){
        let val = arr[i+1]-arr[i];
        if(val<c) {
           c = val
          res.length = 0;
        } 
        if(val === c){
           let temp = [];
            temp.push(arr[i], arr[i+1]);
            res.push(temp)
        }
    }
    return res
}
/*
var minimumAbsDifference = function(arr) {
    arr.sort((a, b)=>a-b);
    let map = new Map();
    let c = Infinity;
    for(let i=0; i<arr.length-1; i++){
        let val = arr[i+1]-arr[i];
        if(val<c) c = val 
        if(map.has(val)){
            let v = map.get(val);
            v.push([arr[i], arr[i+1]])
            map.set(val, v)
        }else{
            map.set(val, [[arr[i], arr[i+1]]])
        }
    }
    for(let [key, val] of map.entries()){
        if(key ===c){
            return val
        }
    }
};
*/

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!