当前位置:网站首页>1200.Minimum Absolute Difference
1200.Minimum Absolute Difference
2022-07-07 03:26: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.
source : Power button (LeetCode)
link :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
边栏推荐
- Uniapp adaptation problem
- Variables, process control and cursors (MySQL)
- Set static IP for raspberry pie
- The version control of 2021 version is missing. Handling method
- 1200.Minimum Absolute Difference
- Another million qubits! Israel optical quantum start-up company completed $15million financing
- input_delay
- 源代码保密的意义和措施
- 20.(arcgis api for js篇)arcgis api for js面采集(SketchViewModel)
- 【colmap】已知相机位姿情况下进行三维重建
猜你喜欢
CVPR 2022 best paper candidate | pip: six inertial sensors realize whole body dynamic capture and force estimation
Mathematical induction and recursion
Experience design details
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
25.(arcgis api for js篇)arcgis api for js线修改线编辑(SketchViewModel)
亚像素级角点检测Opencv-cornerSubPix
「小样本深度学习图像识别」最新2022综述
哈夫曼树基本概念
leetcode
注意力机制原理
随机推荐
Sorting operation partition, argpartition, sort, argsort in numpy
Codeforces round 264 (Div. 2) C gargari and Bishop [violence]
腾讯云原生数据库TDSQL-C入选信通院《云原生产品目录》
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
Netperf and network performance measurement
Sub pixel corner detection opencv cornersubpix
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
Depth analysis of compilation constants, classloader classes, and system class loaders
LAB1配置脚本
U.S. Air Force Research Laboratory, "exploring the vulnerability and robustness of deep learning systems", the latest 85 page technical report in 2022
Don't you know the relationship between JSP and servlet?
VHDL实现任意大小矩阵加法运算
pip只下载不安装
函数重入、函数重载、函数重写自己理解
When you go to the toilet, you can clearly explain the three Scheduling Strategies of scheduled tasks
mos管實現主副電源自動切換電路,並且“零”壓降,靜態電流20uA
树莓派设置wifi自动连接
Graphical tools package yolov5 and generate executable files exe
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
MOS transistor realizes the automatic switching circuit of main and auxiliary power supply, with "zero" voltage drop and static current of 20ua