数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

注意:本题相对书上原题稍作改动

示例 1:

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

示例 2:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

一开始的代码如下,因为从0开始到n的所有整数如果没有缺失,其和为(0+n)*(n+1)/2,将缺失后数组内数字的和加起来,做差即可知道缺失的是谁。
也可以这么想,数组是从1~n的整数,其和应该为(1+n)*n/2,现用0取代其中的某个数字,求取代的是几。

int missingNumber(int* nums, int numsSize){int i=0,sumf=0,sumt=0;sumt=numsSize*(numsSize+1)/2;for(i=0;i<numsSize;i++){sumf=sumf+nums[i];          }return sumt-sumf;
}

优化内存后的代码如下

int missingNumber(int* nums, int numsSize){int sum=0;for(int i=0;i<numsSize;i++){sum=sum+nums[i];          }return numsSize*(numsSize+1)/2-sum;
}

还可以用异或的运算法则
a ^ b ^ b = a
a ^ b ^ a = b
a ^ a = 0
a ^ 0 = a
可以得,遍历一遍 结果=结果 ^ 每项 ^ i

var missingNumber = function(nums) {var a =0 ;//因为数组少了一项,所以将结果初始值设为0,i从1开始遍历到nfor(var i =1;i<=nums.length;i++){ //a = a ^ nums[i-1] ^ i}return a;
};

异或运算法则:
  1. a ^ b = b ^ a
  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
  3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
  4. a ^ b ^ a = b.

自用笔记26——异或运算法则相关推荐

  1. 取模运算法则,异或运算法则

    一.取模运算法则(百度百科) 定义 给定一个正整数p,任意一个整数n,一定存在等式 : n = kp + r : 其中 k.r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商, ...

  2. 异或运算法则 hdu 2095

    异或运算法则 1. a ^ b = b ^ a 2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 3. d = a ^ b ^ c 可以推出 a = d ^ b ^ ...

  3. 【算法笔记】异或运算的奇妙之处

    前言: 本章主要是针对异或运算相关问题总结的几个小题目,掌握了它们,在写一些算法题时或许有意想不到的惊喜! 文章目录 1. 基础介绍 2. 题目 题一:如何不用额外变量交换两个数 a 和 b 题二:一 ...

  4. 二进制与、或、异或运算法则

    1.与 (&) 0 & 0 = 0.0 & 1 = 0.1 & 0 = 0.1 & 1 = 1 两者全部为true则结果为true,否则为false; 2.或( ...

  5. c语音异或运算符_一文看懂C语言异或运算

    一.异或运算简介 异或运算一般指异或.异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a⊕b= ...

  6. c语言异或运算作用,一文看懂C语言异或运算

    描述 一.异或运算简介 异或运算一般指异或.异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a ...

  7. c语言 异或结合律,异或运算

    异或运算是位运算,不产生进位,也不会对其他bit产生影响.一般用XOR表示,在C语言中,异或用'^'表示. 异或运算法则与无进位的二进制加法一致:0^0=0,1^0=1,0^1=1,1^1=0(同为0 ...

  8. # 异运算_小学数学整数、小数、分数加减法运算法则及练习(可打印)

    很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差. 其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑.比如小学的运算中,很多孩子并没有了解到运 ...

  9. 二进制#逻辑计算#与(∧)、或(∨)、非(¬)、异或(⨁)#与,或,非,异或的运算法则#与,或,非,异或运算的基础代码

    任务 本关任务是实现这些逻辑运算,每种逻辑运算对应一个函数: AND(a ,b):a和b进行与运算: OR (a ,b):a和b进行或运算: NOT(a):a进行非运算: XOR(a ,b):a和b进 ...

最新文章

  1. css样式IE8强制兼容IE7
  2. 多人合作开发的标准制定
  3. BZOJ 3731: Gty的超级妹子树
  4. Android电商抢购倒计时,Android限时抢购倒计时实现代码
  5. C语言中变量的储存类别
  6. 处理字典值是把字典放内存还是用sql处理_第二周:MYSQL数据库入门,提升你的数据处理效率...
  7. html京东快报,练习3:仿京东快报.html
  8. c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮
  9. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)...
  10. 大一java实训报告1500字_java实训报告总结范文
  11. 植物大战僵尸:代码实现无限阳光
  12. Java 基础 Collection集合拓展
  13. 微信ios签名报错config:fail
  14. java 数字与英文字母相互转换
  15. Unity制作自己的Project Template
  16. 基于Tablestore的Wifi设备监管系统架构实现 1
  17. python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。
  18. C语言七巧板游戏制作,绘本里的七巧板游戏
  19. 主成分回归分析实战教程
  20. SpringMVC工作流程

热门文章

  1. 解决Visual Studio Code运行python问题(环境配置)
  2. 张明楷:案件事实认定方法的七点注意 z
  3. Java程序员在用的大数据工具,MongoDB稳居第一!
  4. C盘满了如何处理?如何转到其他盘?
  5. python读取csv文件的几种方式(含实例说明)
  6. Mysql数据库基础语句总结
  7. 写一份制作核反应堆的计划书
  8. UltraEdit 10.20c 下载及注册
  9. bentoml部署深度学习模型(一)
  10. App用户自然流量裂变增长:移动互联网社交+深度链接技术的应用