[LeetCode 137] Single Number II(位运算的巧妙运用初级篇)
来源:互联网 发布:交通组织优化定义 编辑:程序博客网 时间:2024/05/16 12:18
题目内容
137 Single Number II
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题目来源
题目简述
找出数组中单独的一个元素,其余元素均出现三次。
题目分析
Single Number I 一题中 其余元素出现两次,同样要求找出数组中单独的元素。该题可巧妙利用位异或运算的特殊性:即相同元素为异或运算结果为零,遍历数组并累计每个元素异或运算的结果即得到单独元素。
本题中其余元素出现三次,无法像上题中用某种单独的运算直接得到结果。所以,可以用位统计的方法。数据类型INT为32位,用包含32个元素的统计数组,统计中数组中每个数二进制化后每个位出现的次数。统计数组中每个数对3求模(结果只能为0或1)后可得到单独元素二进制数的各位情况。化为十进制后即得到结果。
该解法对于类似问题通用且有一定启发作用,较为推荐。
代码示例
class Solution {public: int singleNumber(vector<int>& nums) { int memo[32]={0}; int res=0; for(int i=0;i!=32;i++) { for(int j=0;j!=nums.size();j++) { memo[i]+=(nums[j]>>i)&1; } res+=(memo[i]%3)<<i; } return res; }};
0 0
- [LeetCode 137] Single Number II(位运算的巧妙运用初级篇)
- LeetCode-Single Number II[位运算]
- LeetCode 137. Single Number II (位运算)
- Leetcode-位运算-137. Single Number II(坑未填)
- [算法][LeetCode]Single Number——异或运算的巧妙运用
- leetcode 136. Single Number | XOR的巧妙运用
- [Leetcode]LeetCode Single Number II 位运算法解析理解
- Leetcode 位运算 Single Number
- LeetCode【位运算】:Single Number
- 位运算的巧妙运用
- 位运算的巧妙运用
- Single Number II位运算解析
- [leetcode-137]Single Number II (c)
- LeetCode(137) Single Number II
- Leetcode: Single Number(136,137). 位运算解法分析
- LeetCode oj 136. Single Number (位运算)
- LeetCode oj 260. Single Number III (位运算)
- [leetcode][位运算] Single Number III
- 非阻塞式connect的Linux实现
- hdu3605——Escape(二分图多重匹配)
- grub修改fstab设置(解决系统卡在ubuntu loading initial ramdisk)
- nRF52832 功耗实际测试
- C++ JAVA 的区别
- [LeetCode 137] Single Number II(位运算的巧妙运用初级篇)
- 基于TEE的安全系统有哪些?
- Mat、cvMat与IplImage
- 前端开发必须知道的ES6的十大特征
- |洛谷|贪心|P2813 母舰
- 数据挖掘10大算法及详解
- 基础总结篇之:Intent详细介绍
- vtkImageData转化为cv::Mat
- eclipse常用的快捷键--------(真正常用的)