四数相加II
454.四数相加II
本题一共四个数组,那么分成2-2,前2个数组的元素存入map,后2个数组的元素去查找,注意当找到对应的元素时,不能简单加1,而是加map对应的值,另外注意使用getOrDefault方法,比较简便
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int sum = 0;
Map<Integer,Integer> map = new HashMap();
for (int i : nums1) {
for (int j : nums2) {
//getOrDefault方法
map.put(i + j, map.getOrDefault(i + j, 0) + 1);
}
}
for (int i : nums3) {
for (int j : nums4) {
sum += map.getOrDefault(- i - j, 0);
}
}
return sum;
}
}
赎金信
383. 赎金信
本题比较容易想到使用哈希方法统计各个字母出现的个数,可以使用map和数组,但是map消耗资源更多,所以选择数组,和哈希表第一题类似
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] arr = new int[26];
if (ransomNote.length() > magazine.length()) {
return false;
}
for (char c : magazine.toCharArray()) {
arr[c - 'a'] ++;
}
for (char c : ransomNote.toCharArray()) {
arr[c - 'a'] --;
}
for (int i : arr) {
if (i < 0) {
return false;
}
}
return true;
}
}