提交 cd51fcf2 编写于 作者: V Victor Wu

【268. 丢失的数字】【C++】

上级 8b8f4135
......@@ -132,4 +132,49 @@ public int missingNumber(int[] nums) {
<img src="../pictures/qrcode.jpg" width=200 >
</p>
======其他语言代码======
\ No newline at end of file
======其他语言代码======
[happy-yuxuan](https://github.com/happy-yuxuan) 提供 三种方法的 C++ 代码:
```c++
// 方法:异或元素和索引
int missingNumber(vector<int>& nums) {
int n = nums.size();
int res = 0;
// 先和新补的索引异或一下
res ^= n;
// 和其他的元素、索引做异或
for (int i = 0; i < n; i++)
res ^= i ^ nums[i];
return res;
}
```
```c++
// 方法:等差数列求和
int missingNumber(vector<int>& nums) {
int n = nums.size();
// 公式:(首项 + 末项) * 项数 / 2
int expect = (0 + n) * (n + 1) / 2;
int sum = 0;
for (int x : nums)
sum += x;
return expect - sum;
}
```
```c++
// 方法:防止整型溢出
int missingNumber(vector<int>& nums) {
int n = nums.size();
int res = 0;
// 新补的索引
res += n - 0;
// 剩下索引和元素的差加起来
for (int i = 0; i < n; i++)
res += i - nums[i];
return res;
}
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册