剑指offer-面试题56_2-数组中唯一只出现一次的数字-位运算
2024-09-06 20:26:31
/*
题目:
数组中除一个数字只出现一次外,其余数字都出现3次。
*/
/*
思路:
位运算。
*/ #include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map> using namespace std; int FindNumsAppearOnce(int data[],int length){
if(length < 1 || data == nullptr) return -1; int intSize = sizeof(int)*8;
int bitSum[intSize] = {0}; //计算各位的1的个数
for(int i = 0; i < length; i++){
int bisMask = 0;
for(int j = intSize-1; j>= 0; j--){
bitSum[j] += ((data[i]>>bisMask) & 1);
bisMask++;
}
} //各位上出现3的非整数倍,则该位属于只出现一次的数字
int bisMask = 0;
int res = 0;
for(int i = intSize-1; i >= 0; i--){
if(bitSum[i] % 3 == 1){
res += (1<<bisMask);
bisMask++;
}
}
return res;
} int main(){
int data[] = {2,2,2,3,6,4,5,5,4,6,6,5,4,32,32,32};
cout<<FindNumsAppearOnce(data,sizeof(data)/sizeof(data[0]));
}
最新文章
- DynamicJson
- 用时间复杂度为n的方法找出水王
- Windows Server 2012 四个版本对比
- Hibernate一对一双向关联(外键)
- 基于TCP的NAT子网穿透实验
- android activity启动的时候隐藏软键盘
- RR模式下的事务隔离
- CSS小技巧-两个盒子之间的间距问题
- 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结
- linux下insmod lsmod rmmod
- 新装的Linux服务系统安装MySQL
- css3中的动画 @keyframes animation
- Amazing iOS Tips
- SSM-Spring-22:Spring+Mybatis+JavaWeb的整合
- 【转】【Android】1分钟不用改任何代码在Eclipse中使用AAR
- python模块的使用
- ubuntu14/16 安装python3-opencv3_百度经验
- J - 青蛙的约会(扩展欧几里得)
- JavaScript之复杂对象的深拷贝(完全深拷贝)
- FB的破解与安装