LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
2014-10-06 12:34
507 查看
Single Number
Given an array of integers, every element appears twice 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 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?.1. 既然可以在查找循环外添加循环,那么添加什么循环好呢?排序吧,没错!排序的数列干什么都方便!(感觉这个结论也适用很多地方, 虽然计算复杂度不能达到O(n))2. 利用map处理,效率也接近O(n),不过空间复杂度也要O(n)3. 利用bit process,位运算下面是Single number I 的位运算解法,思路就是每位bit出现2次就清零,所以可以不断异或运算得出最终结果:int singleNumber(int A[], int n){int ans = 0;for (int i = 0; i < n; i++) ans ^= A[i];return ans;}Single number II 的位运算两种解法-- 参考leetcode论坛的代码:方法一,int的32个bit逐个处理-这个方法还算简单的了:
int singleNumber(int A[], int n) {int result =0;for(int i = 0; i< 32; i++){int c = 0;int bit = 1<<i;for(int j = 0; j<n; j++){if (A[j] & bit)c++;}if (c%3)result |=bit;}return result;}这个方法比较普遍,对于任何的n times 都试用。其实异或的方法和其思想是一指的。
相关文章推荐
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- leetcode:Single NumberII 菜鸟解法
- LeetCode: Single Number I && II
- leetcode之137. Single Number II(C++解法 哈希表计数)
- LeetCode:Single Number I && II
- leetcode 137 single NumberII “半加器状态转换”解法
- LeetCode:Single Number I & II & III
- Leetcode: single-number && single-number-ii
- LeetCode解题报告—— Sum Root to Leaf Numbers & Surrounded Regions & Single Number II
- 【leetcode】Single Number && Single Number II(ORZ 位运算)
- 【LeetCode】136 & 137 & 260 - Single Number I & II &III
- LeetCode_Single Number&Single NumberII
- 【leetcode】Single Number & Single Number II
- 【LeetCode】Single Number I & II & III
- [Leetcode]Single Number && Single Number II
- 【Leetcode】:Single Number II问题 in Go语言
- Single Number II问题及解法
- leetcode--single_number&&single_number_II
- leetcode -- Single Number II &III- 位操作,没有理解