给定一个数组nums,其中包含0--n中的n个数,找到数组中没有出现的那个数。

解法一:cyclic swapping algorithm

class Solution
{
public:
int missingNumber(vector<int>& nums)
{
nums.push_back(-);
int len=nums.size();
for(int i=;i<len;i++)
{
while(nums[i]>= && nums[i]!=i)
swap(nums[i], nums[nums[i]]);
}
for(int i=;i<=len;i++)
if(nums[i]==-)
return i;
return -;
}
};

解法二:用(1+n)*n/2减掉数组中所有数,就是没有出现的那个数。

class Solution
{
public:
int missingNumber(vector<int>& nums)
{
int n=nums.size(), sum = (+n)*n/;
for(int i:nums)
sum -= i;
return sum;
}
};

解法三:使用异或运算符,a^b^b=a。

class Solution
{
public:
int missingNumber(vector<int>& nums)
{
int result = nums.size();
for(int i=;i<nums.size();i++)
result = result^i^nums[i];
return result;
}
};

最新文章

  1. Tomcat的粗略介绍
  2. asp.net MVC excel数据导出
  3. C++设计模式-Proxy代理模式
  4. web程序员该学习什么
  5. Linux释放内存空间
  6. poj3207 2-SAT入门
  7. HTML5 测验记录
  8. class&amp;object
  9. LIB库加载方法-引用百度百科
  10. ReentrantLock与synchronized的差别
  11. crontab演出newLISP脚本设置环境变量
  12. 一语惊醒梦中人-《Before I Fall》
  13. UVa 10341 - Solve It【经典二分,单调性求解】
  14. bzoj [Noi2002]Savage 扩展欧几里得
  15. node-express-1
  16. [svc]sort-uniq
  17. oninput和onpropertychange实时监听输入框值的变化
  18. PCL的PNG文件和计算点云重心
  19. AndroidのUI布局之layout weight
  20. 支付宝支付下载对账单bug反馈整理

热门文章

  1. CodeForces161D: Distance in Tree(树分治)
  2. 「NOIP2010」「LuoguP1514」引水入城
  3. 【Codeforces 762A】 k-th divisor
  4. 动画浅析-CAAnimation和CATransition
  5. 模态对话框 DoModal的用法 (vs2008)与非模态对话框
  6. E20180502-hm
  7. 51nod 1268【dp】
  8. hdoj1495简单BFS
  9. IT兄弟连 Java Web教程 Servlet的生命周期
  10. 安装截图软件shutter