当前位置:网站首页>1200.Minimum Absolute Difference
1200.Minimum Absolute Difference
2022-07-06 20:18:00 【SUNNY_CHANGQI】
The description of the problem
Given an array of distinct integers arr, find all pairs of elements with the minimum absolute difference of any two elements.
return a list of parirs in ascending order (with respect to pairs), each pair [a, b] follows.
1. a, b are from arr
2. a < b
3. b - a equals to the minimum absolute difference of any two elements in arr.
an example
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.
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-absolute-difference
The solution 1
The intuition
Leverage the loop nesting to traveral all the diffVal and store them into a map and log the minimum difference value. In the end, sort out the return nesting loop.
The corresponding codes
#include <vector>
#include <iostream>
#include <algorithm>
#include <climits>
#include <map>
using namespace std;
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> res;
map<int, vector<vector<int>>> m;
int minDiff = INT_MAX;
for (int i = 0; i < arr.size(); i++) {
for (int j = i + 1; j < arr.size(); j++) {
int diff = abs(arr[i] - arr[j]);
minDiff = min(minDiff, diff);
vector<int> t;
if (arr[i] < arr[j]) {
t.push_back(arr[i]);
t.push_back(arr[j]);
} else {
t.push_back(arr[j]);
t.push_back(arr[i]);
}
m[diff].push_back(t);
}
}
res = m[minDiff];
// sort res by first element
sort(res.begin(), res.end(), [](vector<int>& a, vector<int>& b) {
return a[0] < b[0];
});
return res;
}
};
int main()
{
Solution s;
vector<int> arr = {
4, 2, 1, 3};
vector<vector<int>> res = s.minimumAbsDifference(arr);
for (auto& v : res) {
for (auto& i : v) {
cout << i << " ";
}
cout << endl;
}
return 0;
}
The result
The solution 2
firstly sort out the elements in arr in asecending order. traversal the arr to find the minimum difference value. Lastly, traversal the second time.
The codes
#include <vector>
#include <iostream>
#include <algorithm>
#include <climits>
#include <map>
using namespace std;
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> res;
int minDiff = INT_MAX;
sort(arr.begin(), arr.end());
for (int i = 0; i < arr.size() - 1; i++) {
int diff = arr[i + 1] - arr[i];
minDiff = min(minDiff, diff);
}
for (auto it = arr.begin(); it != arr.end() - 1; it++) {
if (abs(*(it + 1) - *it) == minDiff) {
res.push_back({
*it, *(it + 1)});
}
}
return res;
}
};
int main()
{
Solution s;
vector<int> arr = {
4, 2, 1, 3};
vector<vector<int>> res = s.minimumAbsDifference(arr);
for (auto& v : res) {
for (auto& i : v) {
cout << i << " ";
}
cout << endl;
}
return 0;
}
The corresponding results
The more optimized solution
#include <vector>
#include <iostream>
#include <algorithm>
#include <climits>
#include <map>
using namespace std;
class Solution {
public:
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
vector<vector<int>> res;
int minDiff = INT_MAX;
sort(arr.begin(), arr.end());
for (int i = 0; i < arr.size() - 1; i++) {
int diff = arr[i + 1] - arr[i];
if (diff < minDiff) {
minDiff = diff;
res.clear();
res.push_back({
arr[i], arr[i + 1]});
} else if (diff == minDiff) {
res.push_back({
arr[i], arr[i + 1]});
}
}
return res;
}
};
int main()
{
Solution s;
vector<int> arr = {
4, 2, 1, 3};
vector<vector<int>> res = s.minimumAbsDifference(arr);
for (auto& v : res) {
for (auto& i : v) {
cout << i << " ";
}
cout << endl;
}
return 0;
}
The corresponding result
边栏推荐
猜你喜欢
Le tube MOS réalise le circuit de commutation automatique de l'alimentation principale et de l'alimentation auxiliaire, et la chute de tension "zéro", courant statique 20ua
树莓派设置静态ip
Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
2022.6.28
R数据分析:cox模型如何做预测,高分文章复现
CVPR 2022 best paper candidate | pip: six inertial sensors realize whole body dynamic capture and force estimation
Significance and measures of source code confidentiality
input_ delay
Experience design details
函数重入、函数重载、函数重写自己理解
随机推荐
树莓派设置wifi自动连接
pip只下载不安装
Another million qubits! Israel optical quantum start-up company completed $15million financing
Construction of knowledge map of mall commodities
Optimization of application startup speed
Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
Simple bubble sort
【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
树莓派设置静态ip
MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua
源代码保密的意义和措施
如何替换模型的骨干网络(backbone)
存储过程与函数(MySQL)
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
【达梦数据库】添加自动收集统计信息的任务
CVPR 2022 best paper candidate | pip: six inertial sensors realize whole body dynamic capture and force estimation
2022年信息安全工程师考试大纲
24.(arcgis api for js篇)arcgis api for js点修改点编辑(SketchViewModel)
Jerry's phonebook acquisition [chapter]
尚硅谷JVM-第一章 类加载子系统