消失的两个数字

题解方法

  • 数学

数学

  1. 消失的两数之和 = n~1 求和减去当前数组求和
  2. 两数不相等,则必然位于两数之和的均值的两侧,可将问题转化为求消失的一个数字

核心代码

数学

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int n = nums.length + 2;
int sum = 0;

for (int num: nums) {
sum += num;
}
// 求消失的两数之和
int sumTwo = n * (n + 1) / 2 - sum;
int mean = sumTwo / 2;
sum = 0;
// 求消失的两数中较小的数,将问题转化为求消失的一个数
for (int num: nums) {
if (num <= mean) {
sum += num;
}
}
int x1 = mean * (mean + 1) / 2 - sum;
int x2 = sumTwo - x1;

题目来源

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)