自用笔记26——异或运算法则
数组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——异或运算法则相关推荐
- 取模运算法则,异或运算法则
一.取模运算法则(百度百科) 定义 给定一个正整数p,任意一个整数n,一定存在等式 : n = kp + r : 其中 k.r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商, ...
- 异或运算法则 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 ^ ...
- 【算法笔记】异或运算的奇妙之处
前言: 本章主要是针对异或运算相关问题总结的几个小题目,掌握了它们,在写一些算法题时或许有意想不到的惊喜! 文章目录 1. 基础介绍 2. 题目 题一:如何不用额外变量交换两个数 a 和 b 题二:一 ...
- 二进制与、或、异或运算法则
1.与 (&) 0 & 0 = 0.0 & 1 = 0.1 & 0 = 0.1 & 1 = 1 两者全部为true则结果为true,否则为false; 2.或( ...
- c语音异或运算符_一文看懂C语言异或运算
一.异或运算简介 异或运算一般指异或.异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a⊕b= ...
- c语言异或运算作用,一文看懂C语言异或运算
描述 一.异或运算简介 异或运算一般指异或.异或(xor)是一个数学运算符.它应用于逻辑运算.异或的数学符号为"⊕",计算机符号为"xor".其运算法则为: a ...
- c语言 异或结合律,异或运算
异或运算是位运算,不产生进位,也不会对其他bit产生影响.一般用XOR表示,在C语言中,异或用'^'表示. 异或运算法则与无进位的二进制加法一致:0^0=0,1^0=1,0^1=1,1^1=0(同为0 ...
- # 异运算_小学数学整数、小数、分数加减法运算法则及练习(可打印)
很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差. 其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑.比如小学的运算中,很多孩子并没有了解到运 ...
- 二进制#逻辑计算#与(∧)、或(∨)、非(¬)、异或(⨁)#与,或,非,异或的运算法则#与,或,非,异或运算的基础代码
任务 本关任务是实现这些逻辑运算,每种逻辑运算对应一个函数: AND(a ,b):a和b进行与运算: OR (a ,b):a和b进行或运算: NOT(a):a进行非运算: XOR(a ,b):a和b进 ...
最新文章
- css样式IE8强制兼容IE7
- 多人合作开发的标准制定
- BZOJ 3731: Gty的超级妹子树
- Android电商抢购倒计时,Android限时抢购倒计时实现代码
- C语言中变量的储存类别
- 处理字典值是把字典放内存还是用sql处理_第二周:MYSQL数据库入门,提升你的数据处理效率...
- html京东快报,练习3:仿京东快报.html
- c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮
- ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)...
- 大一java实训报告1500字_java实训报告总结范文
- 植物大战僵尸:代码实现无限阳光
- Java 基础 Collection集合拓展
- 微信ios签名报错config:fail
- java 数字与英文字母相互转换
- Unity制作自己的Project Template
- 基于Tablestore的Wifi设备监管系统架构实现 1
- python解答蓝桥杯真题2 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在19351936年应邀来中国清华大学讲学。。。
- C语言七巧板游戏制作,绘本里的七巧板游戏
- 主成分回归分析实战教程
- SpringMVC工作流程