提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
详细布置
454.四数相加II :
四个独立的数组:随机选择两个进行求和,统计每个值存在的次数,在另两个数组中进行判断,若其和的负数存在哈希表中,答案增加这个次数
解答
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
int res = 0;
Map <Integer , Integer> map = new HashMap<Integer , Integer>();
for(int i : nums1){
for(int j : nums2){
int sum = i + j;
//getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
map.put(sum , map.getOrDefault(sum , 0) + 1);
}
}
for(int i : nums3){
for(int j : nums4){
res = res + map.getOrDefault(0 - i - j , 0);
}
}
return res;
}
}
383. 赎金信 :
用一个长度为26的数组还记录magazine里字母出现的次数;使用map的空间消耗要比数组大一些的
解答
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
int[] record = new int[26];
if(ransomNote.length() > magazine.length()){
return false;
}
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']--;
}
for(int i : record){
if(i < 0){
return false;
}
}
return true;
}
}