哈希表
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;
}
}

浙公网安备 33010602011771号