leetcode 136. Single Number
2016-09-13 20:55
423 查看
Given an array of integers, every element appears twice except
for one. Find that single one.
我的代码:
用HashMap存放已出现的数字,再次出现时删除。但是Value这个值是废的,而且最后明知道只剩一个数字还要用遍历来return。感觉十分不好。
Discuss里还有另外几种解法:
一个数和自身异或得0,和0异或是自身。这样就把两次一样的数全抵消了。十分美妙。
for one. Find that single one.
我的代码:
public int singleNumber(int[] nums) { HashMap<Integer,Integer>a = new HashMap<Integer,Integer>(); for(int i:nums){ if(!a.containsKey(i)){ a.put(i,1); }else{ if(a.get(i)==1){ a.remove(i); } } } int i=0; for (Map.Entry<Integer, Integer> entry : a.entrySet()) { i = entry.getKey(); } return i; }
用HashMap存放已出现的数字,再次出现时删除。但是Value这个值是废的,而且最后明知道只剩一个数字还要用遍历来return。感觉十分不好。
Discuss里还有另外几种解法:
public int singleNumber(int[] nums) { int result = 0; for(int i=0;i<nums.length;i++) result ^= nums[i]; return result; }
一个数和自身异或得0,和0异或是自身。这样就把两次一样的数全抵消了。十分美妙。
public int singleNumber(int[] nums) { if(nums.length==1) { return nums[0]; } // First sort the arrays Arrays.sort(nums); //Now start looping for(int i=0;i<nums.length;i++) { // case 1 unique number is first if( i==0 && nums[i]!=nums[i+1] ) { return nums[i]; } else if(i+2<nums.length-1 && (nums[i]!=nums[i+1])&&(nums[i+1]!=nums[i+2])) { return nums[i+1]; } // case 2 unique number is somewhere in middle else if(i==nums.length-1) { if(nums[i]!=nums[i-1]) { return nums[i]; } } // case 3 unique number is last one } return -1; }先排个序再比较。十分美妙。
相关文章推荐
- leetcode-136-Single Number
- LeetCode 136 single number
- LeetCode 136 : Single Number
- Leetcode: Single Number(136,137). 位运算解法分析
- Leetcode 136. Single Number
- 【LeetCode】136. Single Number
- LeetCode 136 Single Number
- LeetCode: 136. Single Number
- LeetCode 136. Single Number
- LeetCode(136)Single Number
- Java for LeetCode 136 Single Number
- LeetCode 136. Single Number
- Leetcode[136]-Single Number
- leetcode_136 Single Number-找数组中唯一的单身数
- leetcode:136. Single Number解题报告
- LeetCode 136. Single Number
- LeetCode 136 — Single Number(C++ Java Python)
- leetcode(136)_Single Number
- LeetCode-Hash-136. Single Number
- [leetcode] 136. Single Number