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; }