领扣LintCode算法问题答案-84. 落单的数 III
目录
84. 落单的数 III描述样例 1:样例 2:
题解鸣谢
84. 落单的数 III
描述
给出 2 * n + 2 个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。
样例 1:
输入: [1,2,2,3,4,4,5,3]
输出: [1,5]
样例 2:
输入: [1,1,2,3,4,4]
输出: [2,3]
题解
public class Solution {
public List
<Integer> singleNumberIII(int[] A
) {
List
<Integer> ret
= new ArrayList<>();
if (A
.length
== 2) {
ret
.add(A
[0]);
ret
.add(A
[1]);
return ret
;
}
Arrays
.sort(A
);
for (int i
= 1; i
< A
.length
- 1; i
++) {
int preN
= A
[i
- 1];
int n
= A
[i
];
int nextN
= A
[i
+ 1];
if (n
!= nextN
&& n
!= preN
) {
ret
.add(n
);
if (ret
.size() == 2) {
return ret
;
}
}
}
if (A
[0] != A
[1]) {
ret
.add(A
[0]);
}
if (A
[A
.length
- 1] != A
[A
.length
- 2]) {
ret
.add(A
[A
.length
- 1]);
}
return ret
;
}
}
原题链接点这里
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。 欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。