leetcode刷题7

今天做的第二道题是LeetCode第136题,说的是给一个数组,除了其中一个元素外,其余的元素都出现了两次,要求输出只出现了一次的元素的值。具体代码如下:

public static int solution(int[] nums){
        Map<Integer,Integer> map=new HashMap<>();
        int result=0;
        for (int i = 0; i <nums.length ; i++) {
            if (map.containsKey(nums[i])){
                map.remove(nums[i]);
            }else {
                result=nums[i];
                map.put(result,1);
            }
        }
        return map.keySet().iterator().next();
    }

 第一次修改,20190812。新增了位运算解决该问题。可以考虑位运算中的异或(从高位开始比较,相同为0,否则为1)。具体地代码如下:

public static int find(int[] nums){
        int j=0;
        for (int i = 0; i <nums.length ; i++) {
            j=j^nums[i];
        }
        return j;
    }

 

posted @ 2019-08-11 17:28  刘云生  阅读(85)  评论(0编辑  收藏  举报