Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2e1aad7

Browse files
最小绝对差
1 parent ab216cb commit 2e1aad7

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.leetcode_cn.easy;
2+
/******************最小绝对差**************/
3+
4+
import java.util.ArrayList;
5+
import java.util.Arrays;
6+
import java.util.List;
7+
8+
/**
9+
* 给你个整数数组 arr,其中每个元素都 不相同。
10+
*
11+
* 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
12+
*
13+
*
14+
*
15+
* 示例 1:
16+
* 输入:arr = [4,2,1,3]
17+
* 输出:[[1,2],[2,3],[3,4]]
18+
*
19+
* 示例 2:
20+
* 输入:arr = [1,3,6,10,15]
21+
* 输出:[[1,3]]
22+
*
23+
* 示例 3:
24+
* 输入:arr = [3,8,-10,23,19,-4,-14,27]
25+
* 输出:[[-14,-10],[19,23],[23,27]]
26+
*
27+
*
28+
* 提示:
29+
*
30+
* 2 <= arr.length <= 10^5
31+
* -10^6 <= arr[i] <= 10^6
32+
*
33+
*/
34+
public class MinimumAbsoluteDifference {
35+
36+
public List<List<Integer>> minimumAbsDifference(int[] arr) {
37+
38+
List<List<Integer>> list = new ArrayList<>();
39+
// 升序
40+
Arrays.sort(arr);
41+
// 差值
42+
int dv = Math.abs(arr[0] - arr[1]);
43+
List<Integer> list1 = new ArrayList<>();
44+
list1.add(arr[0]);
45+
list1.add(arr[1]);
46+
list.add(list1);
47+
for (int i = 1; i < arr.length - 1; i++) {
48+
int dvTemp = Math.abs(arr[i] - arr[i+1]);
49+
if (dvTemp <= dv) {
50+
List<Integer> list2 = new ArrayList<>();
51+
list2.add(arr[i]);
52+
list2.add(arr[i+1]);
53+
if (dvTemp < dv) {
54+
list.clear(); // 清空原先的
55+
dv = dvTemp; // 新的差值
56+
}
57+
list.add(list2);
58+
}
59+
}
60+
return list;
61+
}
62+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /