哈希表

242 有效的字母异位词

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] record = new int[26];
        for (int i = 0; i < s.length(); i++) {
            record[s.charAt(i) - 'a']++;
        }
        for (int i = 0; i < t.length(); i++) {
            record[t.charAt(i) - 'a']--;
        }
        for (int i = 0; i < record.length; i++) {
            if (record[i] != 0) {
                return false;
            }
        }
        return true;
    }
}

349 两个数组的交集

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> nums_set = new HashSet<>();
        HashSet<Integer> res_set = new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            nums_set.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            if (nums_set.contains(nums2[i])) {
                res_set.add(nums2[i]);
            }
        }
        int[] res = new int[res_set.size()];
        int n = 0;
        Iterator<Integer> iterator = res_set.iterator();
        while (iterator.hasNext()) {
            res[n++] = iterator.next();
        }
        return res;
    }
}

202 快乐数

class Solution {
    public boolean isHappy(int n) {
        HashSet<Integer> set = new HashSet<>();
        int sum = 0;
        while (true) {
            sum = getSum(n);
            if (n == 1) {
                return true;
            }
            if (set.contains(sum)) {
                return false;
            } else {
                set.add(sum);
            } 
            n = sum;
        }
    }
    public int getSum(int n) {
        int sum = 0;
        while (n != 0) {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
}

1 两数之和

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            Set<Integer> set = map.keySet();
            if (set.contains(target - nums[i])) {
                return new int[]{i, map.get(target - nums[i])};
            }
            map.put(nums[i], i);
        }
        return null;
    }
}

454 四数相加 ll

class Solution {
    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int count = 0;
        for (int a : A) {
            for (int b : B) {
                map.put(a+b, map.getOrDefault(a+b, 0)+1);
            }
        }

        for (int c : C) {
            for (int d : D) {
                if (map.containsKey(-(c + d))) {
                    count += map.get(-(c + d));
                }
            }
        }
        return count;
    }
}

383 赎金信

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        int[] record = new int[26];
        for (int i = 0; i < magazine.length(); i++) {
            record[magazine.charAt(i)-'a']++;
        }
        for (int i = 0; i < ransomNote.length(); i++) {
            record[ransomNote.charAt(i) - 'a']--;
            if (record[ransomNote.charAt(i) - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
}
posted @ 2021-01-13 11:15  叁柒零壹  阅读(50)  评论(0)    收藏  举报