Single Number(leetcode)
2017-10-31 16:47
169 查看
Single Number
Single Number题目
解决
通过记录出现次数判断
异或
题目
leetcode题目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?
解决
1. 通过记录出现次数判断
class Solution { public: int singleNumber(vector<int>& nums) { int num = nums.size(); unordered_map<int, int> array; for (int i = 0; i < num; i++) { // 先将所有数字出现次数初始化为0 array[nums[i]] = 0; } for (int i = 0; i < num; i++) { // 统计数字的出现次数 array[nums[i]]++; } for (int i = 0; i < num; i++) { if (array[nums[i]] == 1) { return nums[i]; } } } };
2. 异或
异或的运算规律是相同为0,不同为1,这样两个相同的数异或得到的结果就是0。
所以我们将数组
array中的数全部异或,最后得到的结果一定是出现了一次的数。
class Solution { public: int singleNumber(vector<int>& nums) { int result = nums[0]; int num = nums.size(); for (int i = 1; i < num; i++) { result = result ^ nums[i]; } return result; } };
相关文章推荐
- LeetCode题解:Single Number
- Leetcode-位运算-136. Single Number
- leetcode136 Single Number136 Java
- 【LeetCode】Single Number
- LeetCode 之 Single Number
- The Solution to Leetcode 136 Single Number
- [leetcode] 136. Single Number
- 【LeetCode-面试算法经典-Java实现】【136-Single Number(只出现一次的数字)】
- LeetCode : Single Number
- [LeetCode]136 Single Number
- [LeetCode]Single Number
- Leetcode:136.Single Number 找到数组里面的非重复数字,其他数字也最多重复两次
- Leetcode 136. Single Number
- LeetCode(136) Single Number
- leetcode_题解_single number_小技巧
- leetcode(十六)Single Number
- Leetcode 136. Single Number
- [LeetCode]Single Number, Single Number II & Single Number III
- LeetCode 136. Single Number
- LeetCode || Single Number