[LeetCode] Single Number II
来源:互联网 发布:单片机连接摄像头 编辑:程序博客网 时间:2024/06/07 05:38
题目
Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
给定整数数组,每个元素出现三次,除了一个,出现一次。 找到那个单一的。
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
注意:算法应该具有线性运行时的复杂性。 你可以实现它而不使用额外的内存吗?
分析
将数组中每个元素认定为一个 32 位的二进制数,这样每一位只可能是 0 或 1 。
对于整个数组,统计每一位上 1 出现的次数,必定是 3N 或 3N + 1 次。将这个次数对 3 取模,即可获得只出现一次的元素在该位上的值(0 huo 1)。
代码
#include <iostream>#include <vector>using namespace std;class Solution {public: int singleNumber(vector<int>& nums) { int number = 0; for (int i = 0; i < 32; i++) { int count = 0; int temp = 1 << i; for (int j = 0; j < nums.size(); j++) { if (nums[j] & temp) count++; } if (count % 3) number |= temp; } return number; }};int main() { int num[] = {1, 1, 1, 2, 3, 3, 3}; int length = sizeof(num) / sizeof(int); vector<int> nums(num, num + length); Solution solution; int number = solution.singleNumber(nums); cout << "The single number is " << number << endl;}
真值表解法
CSDN 博客:http://blog.csdn.net/yutianzuijin/article/details/50597413
阅读全文
0 0
- Single Number II - leetcode
- Leetcode: Single Number II
- [LeetCode] Single Number II
- LeetCode: Single Number II
- leetcode -- Single Number II
- [leetcode]Single Number II
- [LeetCode] Single Number II
- 【leetcode】Single Number II
- LeetCode:Single Number II
- Leetcode: Single Number II
- leetcode :Single Number II
- Leetcode Single Number II
- [LeetCode]Single Number II
- leetcode: Single Number (II)
- leetcode Single Number II
- leetcode Single Number II
- [LeetCode],Single Number II
- LeetCode | Single Number II
- Python
- 算法文章
- python练习(八)
- Nova Data Flow(Newton版)
- CentOS 6.5通过yum安装 MySQL-5.5
- [LeetCode] Single Number II
- 这是一篇用测试MetaAPI的测试内容2
- 【国家集训队2011】happiness 网络最大流
- jzoj5249 【NOIP2017提高A组模拟8.10】文本编辑器 (序列修改类问题,数据结构)
- 无法导入Jena包的问题机器解决
- 2017杭电多校第六场 1008 Kirinriki(暴力)HDU 6103
- vue.js学习笔记-3
- ORACLE的sql loader的用法
- C之入门总结_Lambda_17