Leetcode刷题之路(131-140)

136.只出现一次的数字

只出现一次的数字题目链接

  • 方法一:排个序,然后再处理
public int singleNumber(int[] nums) {
         int result = -1;
        Arrays.sort(nums);
        for(int i=0;i<nums.length;i+=2){
            if(i+1<nums.length&&nums[i]==nums[i+1]){
                continue;
            }
            if(i-1>=0&&nums[i]==nums[i-1]){
                continue;
            }
            result=nums[i];
            break;
        }
         return result;
    }
  • 方法二:熟练运算异或运算规则,相同数异或运算为0,0和n异或运算为n,所以把整个数组中全异或运算下,最终的计算结果就是那个只出现一次的数
 public int singleNumber(int[] nums) {
        int result = nums[0];
        for(int i=1;i<nums.length;i++){
            result^= nums[i];
        }
        return result;
    }

137.只出现一次的数字 II

只出现一次的数字II题目链接

  • 方法一:排个序,然后处理
public int singleNumber(int[] nums) {
        int results = -1;
        Arrays.sort(nums);
        for(int i=0;i<nums.length;i++){
            if(i+1<nums.length&&nums[i]==nums[i+1]){
                continue;
            }
            if(i-1>=0&&nums[i]==nums[i-1]){
                continue;
            }
            results=nums[i];
            break;
        }
        return results;
    }
  • 方法二:进行异或,不过还要加一个处理,才能让三次出现抵消成0

你可能感兴趣的:(leetcode刷题之路)