【剑指Offer】II. 数组中数字出现的次数 II
2020-06-01 04:49
141 查看
题目
在一个数组
nums中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
思路
看一下题解,都上自动机了,就nm离谱。
采用这个思路,虽然效率略低,但好理解。
直接将代码修改成除了一个数字以外,其余数字都出现 k 次 的通用问题的解决方案
代码
[code]class Solution { public: int singleNumber(vector<int>& nums) { int k = 3;//除了一个数字以外,其余数字都出现 k 次 的通用问题的解决方案 int bits[32] = {0};//int有32位。这个数组用来存二进制中各位1的数量之和 for(int i = 0;i < nums.size();i++){ for(int j = 0;j < 32;j++){ bits[31-j] += (nums[i] & 1); nums[i] >>= 1;//右移一次 } } int a = 0; //二进制数组每位取余k,然后转化成整数 for(int j = 0;j < 32;j++){ a <<= 1; a |= bits[j] % k; } return a; } };
相关文章推荐
- 剑指Offer LeetCode 面试题56 - II. 数组中数字出现的次数 II
- (二十一)剑指offer之数组中出现次数超过一半的数字
- 剑指offer_数字在排序数组中出现的次数
- 剑指offer面试题[29]-数组中出现次数超过一半的数字
- 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
- 剑指Offer--038-数字在排序数组中出现的次数
- 剑指offer——数组中出现次数超过一半的数字_(待写最优法分治)
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer之面试题38数字在排序数组中出现的次数
- [剑指Offer]数组中出现次数超过一半的数字
- 剑指Offer——数字在排序数组中出现的次数
- 剑指Offer面试题38:数字在排序数组中出现的次数 Java实现
- 牛客剑指Offer面试题39:数组中出现次数超过一半的数字
- 剑指offer面试题38 数字在排序数组中出现的次数
- 剑指offer-统计一个数字在排序数组中出现的次数-PHP
- 剑指offer 面试题38 数字在排序数组中出现的次数
- 牛客网剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 【剑指offer】面试题 53:数字在排序数组中出现的次数
- 剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)