leetCode练习(136)
2016-11-10 22:02
218 查看
题目:Single Number
难度:easy
问题描述:
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?
解题思路:
分别用来 哈希表、排序和位运算来解决。位运算最快~真的很巧妙。
代码如下:
public class E_136_SingleNumber {
public int singleNumber(int[] nums) {
HashSet<Integer> hs=new HashSet<>();
for(int i:nums){
if(hs.contains(i)){
hs.remove(i);
}else{
hs.add(i);
}
}
for(int i:hs){
return i;
}
return 0;
}
public static int singleNumber2(int[] nums){
Arrays.sort(nums);
for(int w:nums){
System.out.print(w+" ");
}
System.out.println();
for(int i=0;i<nums.length-1;i=i+2){
if(nums[i]!=nums[i+1]){
return nums[i];
}else{
continue;
}
}
return nums[nums.length-1];
}
public static int singleNumber3(int[] nums){
int len=nums.length;
for(int i=1;i<len;i++){
nums[0]=nums[0]^nums[i];
}
return nums[0];
}
public static void main(String[]args){
int[]nums={17,12,5,-6,12,4,17,-5,2,-3,2,4,5,16,-3,-4,15,15,-4,-5,-6};
System.out.println(singleNumber2(nums));
}
}
难度:easy
问题描述:
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?
解题思路:
分别用来 哈希表、排序和位运算来解决。位运算最快~真的很巧妙。
代码如下:
public class E_136_SingleNumber {
public int singleNumber(int[] nums) {
HashSet<Integer> hs=new HashSet<>();
for(int i:nums){
if(hs.contains(i)){
hs.remove(i);
}else{
hs.add(i);
}
}
for(int i:hs){
return i;
}
return 0;
}
public static int singleNumber2(int[] nums){
Arrays.sort(nums);
for(int w:nums){
System.out.print(w+" ");
}
System.out.println();
for(int i=0;i<nums.length-1;i=i+2){
if(nums[i]!=nums[i+1]){
return nums[i];
}else{
continue;
}
}
return nums[nums.length-1];
}
public static int singleNumber3(int[] nums){
int len=nums.length;
for(int i=1;i<len;i++){
nums[0]=nums[0]^nums[i];
}
return nums[0];
}
public static void main(String[]args){
int[]nums={17,12,5,-6,12,4,17,-5,2,-3,2,4,5,16,-3,-4,15,15,-4,-5,-6};
System.out.println(singleNumber2(nums));
}
}
相关文章推荐
- leetcode练习(136)
- LeetCode 136
- leetcode (136) Single Number js代码实现
- leetcode-136-Single Number
- 136.[LeetCode] Single Number
- leetcode 136 137 Single Number
- leetCode练习(50)
- Leetcode Single Number 136
- leetCode练习(66)
- 位运算——LeetCode 136.Single Number
- LeetCode(136)Single Number
- Leetcode练习-Roman to Integer"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1
- 【LeetCode】136. Single Number
- 怒刷leetcode的题目(1)237、104、136、100
- 通过一道leetcode练习switch case
- [LeetCode]136. Single Number
- Leetcode编程练习:火柴匹配
- [leetcode] 136. Single Number
- leetCode练习(6)
- LeetCode练习-字符串-longest-substring-without-repeating-characters