力扣题目链接
不知道别的方法怎么样,只能想出HashMap
class Solution { public int singleNumber(int[] nums) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(int num :nums){ map.put(num,map.getOrDefault(num,0)+1); } for(Map.Entry<Integer,Integer> entry: map.entrySet()){ if(entry.getValue().equals(1)){ return entry.getKey(); } } return -1; } }
力扣大佬的代码1ms
class Solution { //将整数的各个数位上的加起来,然后对3取余,若结果为0,则待求数字在该位上是0; //若结果为1,则待求数字在该位上是1. public int singleNumber(int[] nums) { //java的int整型为32位 int[] arr=new int[32]; for(int num:nums){ for(int i=0;i<32;i++){ arr[i]+=(num>>(31-i))&1; } } int res=0; for(int i=0;i<32;i++){ res=(res<<1)+arr[i]%3; } return res; } }