leetCode练习(136)

来源:互联网 发布:protobuf数据解析 编辑:程序博客网 时间:2024/03/29 19:31

题目: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));}}


0 0
原创粉丝点击