136. Single Number
来源:互联网 发布:四维设计软件 编辑:程序博客网 时间:2024/06/16 21:25
- Single Number
136. Single Number
使用排序再比较的方法,就会超时。
class Solution {public: int singleNumber(vector<int>& nums) { int nums_len = nums.size(); if(nums_len == 1) return nums[0]; sort(nums.begin(), nums.end()); int i; for(i = 0; i < nums_len; i += 2) { if(i + 1 < nums_len && nums[i] != nums[i + 1]) return nums[i]; } return nums[nums_len - 1]; }};
奇淫技巧:
class Solution {public: int singleNumber(vector<int>& nums) { return std::accumulate(nums.begin(), nums.end(), 0, [](int x, int y) { return x^y; }); }};
这个思路就是相同元素抑或之后为0,而且疑惑操作满足交换律,最后的就是需要的东西。
对于accumulate的解释可以看:
http://en.cppreference.com/w/cpp/algorithm/accumulate
http://blog.csdn.net/guodongxiaren/article/details/50615067
正规做法:
哈希表。这里使用了额外的空间来做索引。其实可以用map来做,但是这里是为了更加了解哈希表所以这么写了。
class Solution {public: int singleNumber(vector<int>& nums) { int result = 0; int nums_len = nums.size(); int *hashkey = new int[nums_len](); int *hashvalue = new int[nums_len](); int *hashkey_m = new int[nums_len](); int *hashvalue_m = new int[nums_len](); int i; int idx = 0; for(i = 0; i < nums_len; i++) { idx = nums[i] % nums_len; if(idx < 0) { idx = ~(idx-1); hashkey_m[idx]++; hashvalue_m[idx] = nums[i]; } else { hashkey[idx]++; hashvalue[idx] = nums[i]; } } for(i=0; i < nums_len; i++) if(hashkey[i] == 1) return hashvalue[i]; for(i=0; i < nums_len; i++) if(hashkey_m[i] == 1) return hashvalue_m[i]; delete []hashkey; delete []hashvalue; delete []hashkey_m; delete []hashvalue_m; return 0 ; }};
1 0
- 136. Single Number&137. Single Number II
- 136. Single Number
- LeetCode 136. Single Number
- 136.Single Number
- [Leetcode] 136. Single Number
- LeetCode 136. Single Number
- 136.Single Number
- 136. Single Number
- 136.Single Number
- 【leetcode】136. Single Number
- 【LeetCode】136. Single Number
- Leetcode 136. Single Number
- leetcode 136. Single Number
- leetcode 136. Single Number
- 136. Single Number LeetCode
- LeetCode 136. Single Number
- LeetCode 136. Single Number
- [LeetCode]136. Single Number
- Android-MVP+Retrofit+Rxjava实现一个知乎日报客户端
- Android Activity生命周期
- bellman-ford算法模板
- 11.4
- 数据结构——队列的使用(二)
- 136. Single Number
- merchant story
- git遇到的一点小问题
- 活学活用,打开/重启Tomcat的小程序~
- 第一次写CSDN博客
- byte字节数组 转换成double类型
- 洛谷P1220 关路灯
- PHP集成环境 Xampp,PHPwamp等等国内外著名的集成环境
- python技巧(13)