给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

示例 1:

输入: [3,0,1]
输出: 2

示例 2:

输入: [9,6,4,2,3,5,7,0,1]
输出: 8

说明:
你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?

思路有两种,一种是求和,根据数学方法算出缺失项,一种是使用异或,求出缺失项。

摘自评论区:

好像和以前的一道题(只出现一次的数字)有异曲同工之处。看了大家的题解,异或操作(^)是一种很好的方式,不用考虑sum越界问题。

**举个例子:**

  • 0 ^ 4 = 4
  • 4 ^ 4 = 0

那么,就可以不用求和,直接使用异或运算^进行**抵消**,剩下的数字就是缺失的了。

代码如下:

class Solution {
public int missingNumber(int[] nums) {
int n=nums.length;
int total=0;
for(int i : nums)
total+=i;
return (n+1)*n/2-total;
}
}

最新文章

  1. linux socket编程实例
  2. Java中的两个关键字——super、this
  3. hash 分区的用途是什么?
  4. ubuntu 14 配置JDK
  5. 【PL/SQL练习】控制结构
  6. 396. Rotate Function
  7. (转载)PHP isset()函数作用
  8. linux 在批处理中,完整路径有空格的处理方式(加引號)
  9. Android 开发UI牛博[转]
  10. 回文质数 Prime Palindromes
  11. Vue与React的异同
  12. 微信小程序笔记
  13. JVM的类加载
  14. js关闭当前页
  15. jdk6使用WebSocket
  16. Android Studio SVN配置
  17. Problem4-Project Euler
  18. Android 给双ListView组织数据源
  19. Little C Loves 3 I
  20. 【Python学习笔记】

热门文章

  1. (20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
  2. tinyxml2
  3. 《如何学习基于ARM嵌入式系统》笔记整理
  4. Spring Boot - 访问外部接口最全总结
  5. Java properties | FileNotFoundException: properties (系统找不到指定的文件。)
  6. printf 格式输出代码大全
  7. 源码学习系列之SpringBoot自动配置(篇一)
  8. rem1
  9. SpringCloud之Zuul高并发情况下接口限流(十二)
  10. 第二篇 Flask的Response三剑客及两个小儿子