当前位置:网站首页>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
边栏推荐
- input_delay
- Experience design details
- 枚举通用接口&枚举使用规范
- Development of wireless communication technology, cv5200 long-distance WiFi module, UAV WiFi image transmission application
- Flutter3.0了,小程序不止于移动应用跨端运行
- C language string sorting
- Mathematical induction and recursion
- The latest 2022 review of "small sample deep learning image recognition"
- Significance and measures of source code confidentiality
- 【达梦数据库】添加自动收集统计信息的任务
猜你喜欢
“去虚向实”大潮下,百度智能云向实而生
【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
Development of wireless communication technology, cv5200 long-distance WiFi module, UAV WiFi image transmission application
源代码保密的意义和措施
Shangsilicon Valley JVM Chapter 1 class loading subsystem
About Tolerance Intervals
The first symposium on "quantum computing + application of financial technology" was successfully held in Beijing
leetcode
Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
随机推荐
Lavel PHP artisan automatically generates a complete set of model+migrate+controller commands
opencv环境的搭建,并打开一个本地PC摄像头。
Flink task exit process and failover mechanism
Principle of attention mechanism
美国空军研究实验室《探索深度学习系统的脆弱性和稳健性》2022年最新85页技术报告
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
[dream database] add the task of automatically collecting statistical information
上个厕所的功夫,就把定时任务的三种调度策略说得明明白白
1200.Minimum Absolute Difference
Depth analysis of compilation constants, classloader classes, and system class loaders
What about SSL certificate errors? Solutions to common SSL certificate errors in browsers
注意力机制原理
数学归纳与递归
23.(arcgis api for js篇)arcgis api for js椭圆采集(SketchViewModel)
U.S. Air Force Research Laboratory, "exploring the vulnerability and robustness of deep learning systems", the latest 85 page technical report in 2022
安装 torch 0.4.1
杰理之在非蓝牙模式下,手机连接蓝牙不要跳回蓝牙模式处理方法【篇】
Cocos2d-x Box2D物理引擎编译设置
变量、流程控制与游标(MySQL)
枚举通用接口&枚举使用规范