力扣---2020.4.28

面試題56 - I. 數組中數字出現的次數

//空間複雜度不滿足
class Solution {
    public int[] singleNumbers(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int num:nums){
            map.put(num,map.getOrDefault(num,0)+1);
        }
        int[] arr = new int[2];
        int i =0;
        for(Integer a:map.keySet()){
            if(map.get(a)==1){
                arr[i++] = a;
            }
        }
        return arr;
    }
}
class Solution {
    public int[] singleNumbers(int[] nums) {
        Arrays.sort(nums);
        int[] arr = new int[2];
        int j = 0;
        for(int i = 0;i<nums.length-1;i++){
            if(nums[i]!=nums[i+1]){
                arr[j++] = nums[i];
            }else{
                i++;
            }
        }
        if(j==1){
            arr[j++] = nums[nums.length-1];
        }
        return arr;
    }
}
class Solution {
    public int[] singleNumbers(int[] nums) {
        int sum=0;
        //得到異或結果,即爲不相同兩個數的異或結果sum
        for(int num:nums)
            sum^=num;
        //得到sum的二進制的1的最低位
        int flag=(-sum)&sum;
        /*
        while((k & flag) == 0) {
            flag <<= 1;
        }
        */


        int result[]=new int[2];
        //分成兩個組進行異或,每組異或後的結果就是不相同兩個數的其中之一
        for(int num:nums){
            if((flag&num)==0)
                result[0]^=num;
            else{
                result[1]^=num;
            }
        }
        return result;
    }
}

面試題 01.01. 判定字符是否唯一

class Solution {
    public boolean isUnique(String astr) {
        for (int i=0;i<astr.length();i++){
            if (astr.lastIndexOf(astr.charAt(i))!=i){
                return false;
            }
        }
        return true;
    }
}
class Solution {
    public boolean isUnique(String astr) {
        int[] ch = new int[26];
        for (int i=0;i<astr.length();i++) {
            ch[astr.charAt(i)-'a'] += 1;
            if (ch[astr.charAt(i)-'a']>1) {
                return false;
            }
        }
        return true;
    }
}

你知道的越多,你不知道的越多。
有道無術,術尚可求,有術無道,止於術。
如有其它問題,歡迎大家留言,我們一起討論,一起學習,一起進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章