day7 454.四数相加II 题目链接:leetcode.cn/problems/4s…
巧妙使用map解决问题,并且最大化时间效率。 代码如下:
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int, int> umap;//key:a+b的值, value:a+b出现的次数
for (int a : nums1) {
for (int b : nums2) {
umap[a + b]++;
}
}
int count = 0;//计算a + b + c + d = 0的次数
for (int c : nums3) {
for (int d : nums4) {
if (umap.find(0 - (c + d)) != umap.end()) {
count += umap[0 - (c + d)];
}
}
}
return count;
}
};
383. 赎金信
题目链接:https://leetcode.cn/problems/ransom-note/
算是复习题了
代码如下:
```class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int record[26] = {0};
if (ransomNote.size() > magazine.size()) {//当前者比后者大则不符合题意,直接false
return false;
}
for (int i = 0; i < magazine.length(); i++) {
record[magazine[i] - 'a']++;
}
for (int i = 0; i < ransomNote.length(); i++) {
record[ransomNote[i] - 'a']--;
if (record[ransomNote[i] - 'a'] < 0) {//当ransomNote[i]-'a' < 0时,证明magazine里没有ransomNote所需的字符
return false;
}
}
return true;
}
};```
15. 三数之和
题目链接:https://leetcode.cn/problems/3sum/