zoukankan      html  css  js  c++  java
  • 1200. Minimum Absolute Difference

    问题:

    给定数组,求其中两两元素对之差=数组中两元素之差的最小值的,元素对数组。

    Example 1:
    Input: arr = [4,2,1,3]
    Output: [[1,2],[2,3],[3,4]]
    Explanation: The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.
    
    Example 2:
    Input: arr = [1,3,6,10,15]
    Output: [[1,3]]
    
    Example 3:
    Input: arr = [3,8,-10,23,19,-4,-14,27]
    Output: [[-14,-10],[19,23],[23,27]]
     
    Constraints:
    2 <= arr.length <= 10^5
    -10^6 <= arr[i] <= 10^6
    

      

    解法:

    对原数组排序sort

    然后从小到大遍历排序后数组,

    同时记录到目前为止两两元素之差mindiff

    若新遍历到的两元素之差<mindiff,

    那么更新mindiff,把res清空clear,push_back 当前两个元素。

    若新遍历到的两元素之差==mindiff,

    push_back 当前两个元素。

    否则什么都不做,继续遍历下一对。

    代码参考:

     1 class Solution {
     2 public:
     3     vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
     4         vector<vector<int>> res;
     5         sort(arr.begin(), arr.end());
     6         int mindiff=INT_MAX;
     7         for(int i=1; i<arr.size(); i++){
     8             int curdiff=arr[i]-arr[i-1];
     9             if(mindiff > curdiff){
    10                 res.clear();
    11                 res.push_back({arr[i-1], arr[i]});
    12                 mindiff=curdiff;
    13             }else if(mindiff == curdiff){
    14                 res.push_back({arr[i-1], arr[i]});
    15             }
    16         }
    17         return res;
    18     }
    19 };
  • 相关阅读:
    Ubuntu 17 安装sublime
    ubuntu17 设置python3为默认及一些库的安装
    Java中内存分析(一)
    我的学习JavaEE路线
    我爱学习……
    HDU 4602
    K-special Tables
    Gym 100712A - Who Is The Winner
    UVA 1583
    水题 UVA 1586
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/13255376.html
Copyright © 2011-2022 走看看