【C++算法】34.位运算_丢失的数字
题目链接:
题目描述:
解法
哈希表
创建一个0~5的数组
从前往后遍历一下,有的数字就在表里面标记一下,最后看一下哪些数字没有被标记过。
高斯求和
先求出应该有的和:(首项+末项)*项数÷2
然后减去数组的和
位运算(异或运算的运算律)
a^0=a
a^a=0
a^b^c=a^(b^c)
原始数组:
nums:[0,1,3,5,4]
0~5
:0 1 2 3 4 5
然后把一堆数异或在一起
C++ 算法代码:
class Solution
{
public:
int missingNumber(vector<int>& nums)
{
int ret = 0;
for(auto x : nums) ret ^= x;
for(int i = 0; i <= nums.size(); i++) ret ^= i;
return ret;
}
};
原文地址:https://blog.csdn.net/hlyd520/article/details/144324885
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!