输出数组中奇数次出现的数
来源:互联网 发布:淘宝818开学季 商城 编辑:程序博客网 时间:2024/06/06 13:33
给定一个整数数组ar, 其中只有一个数出现了奇数次数,其他的数都是偶数词,打印这个数。
我们可以利用异或来解决这个问题。异或只有当两个数字二进制不相同时,对应二进制才是1。同时异或满足交换律。
所以我们可以利用每个数字进行异或,最后得到的就是要求的数字。
void main(){ int ar[11] = {1,4,6,4,8,8,4,2,1,6,2}; int n = sizeof(ar) / sizeof(int); int result = ar[0]; for(int i=1;i<n;++i) { result = result ^ ar[i]; } cout<<result<<endl;}
我忽然在这想到我们交换两个数的值时是通过中间变量来进行的,当然我们也有不用中间变量的方法,例如在利用两个变量的自身的加减运算。(这里不做介绍)或者我们可以利用变量的奇偶次异或运算取出数值。
void main(){ int a = 100; int b = 200; a = a^b; b = a^b; a = b^a; cout<<a<<endl; cout<<b<<endl;}
这里我们就利用的是数字的异或奇偶次的性质。
位运算在我们的算法中有很多妙用。
我在这里总结一下:
异或:
1 是特定值翻转,要使那几位翻转就把那几位与相应位1异或。
2 和0异或保留原值
3 不同中间变量交换两个数的值
清零:和0与
取特定位: 和另外的数特定位置1相与。
判断奇偶: 和1与
阅读全文
0 0
- 输出数组中奇数次出现的数
- 查找数组中惟一出现奇数次的数
- 找一个数组中出现奇数次的那个数
- 在其它数都出现偶数次的数组中寻找出现奇数次的数
- 在其他数都出现偶数次的数组中找到出现奇数次的数
- java算法6~在其他数都出现偶数次的数组中找到出现奇数次的数
- 位运算---在其他数都出现偶数次的数组中找到出现奇数次的数
- 某数组中两个数出现奇数次,剩余的出现偶数次,找出这两个数
- 寻找一个数组中出现次数为奇数次的一个数
- 从数组中找出出现奇数次的那个数 Python版
- 在N个数中找出出现奇数次的数
- 找出数组中出现奇数次的元素
- 找出数组中出现奇数次的元素
- 找出数组中出现奇数次的元素
- 在数组中查找出现奇数次的元素
- 寻找唯一出现奇数次的数
- 找出出现奇数次的数
- 找出现奇数次的两个数
- (2)七层模型基础---设备
- JAVA获取执行sql
- dubbo -- 搭建dubbo-admin管理界面
- Android edittext键盘的隐藏和显示
- Java基础
- 输出数组中奇数次出现的数
- Method breakpoints may dramatically slow down debugging
- JQuery中操作Css样式的方法
- 试题一layout和配置
- 将博客搬至CSDN
- Intel, AMD及VIA CPU的微架构(2)
- 恶意代码分析实战 Lab 1-2 习题笔记
- 620. Not Boring Movies
- Linux学习总结(七)