454. 四数相加 II - 力扣(LeetCode)
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
unordered_map<int,int> map;
for(int a:nums1){
for(int b:nums2){
map[a+b]++;
}
}
int count=0;
for(int c:nums3){
for(int d:nums4){
if(map.find(-(c+d))!=map.end()){
count+=map[-(c+d)];
}
}
}
return count;
}
};
383. 赎金信 - 力扣(LeetCode)
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
if(ransomNote.size()>magazine.size()){
return false;
}
vector<int> res(26);
for(char c:magazine){
res[c-'a']++;
}
for(char c:ransomNote){
res[c-'a']--;
if(res[c-'a']<0){
return false;
}
}
return true;
}
};
15. 三数之和 - 力扣(LeetCode)
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> ans;
for(int i=0;i<nums.size();i++){
if(nums[i]>0){
break;
}
if(i>0&&nums[i]==nums[i-1]){
continue;
}
int left=i+1;
int right=nums.size()-1;
while(left<right){
if(nums[left]+nums[right]<-nums[i]){
left++;
}else if(nums[left]+nums[right]>-nums[i]){
right--;
}else{
ans.push_back({nums[i], nums[left], nums[right]});
while(left<right&&nums[left]==nums[left+1]){
left++;
}
left++;
while(left<right&&nums[right]==nums[right-1]){
right--;
}
right--;
}
}
}
return ans;
}
};
18. 四数之和 - 力扣(LeetCode)
class Solution {
public:
vector<vector<int>> fourSum(vector<int>& nums, int target) {
vector<vector<int>> res;
if (nums.size() < 4) {
return res;
}
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size() - 3; i++) {
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
for (int j = i + 1; j < nums.size() - 2; j++) {
if (j > i + 1 && nums[j] == nums[j - 1]) {
continue;
}
int left = j + 1;
int right = nums.size() - 1;
while (left < right) {
long sum = (long)nums[i] + nums[j] + nums[left] + nums[right];
if (sum < target) {
left++;
} else if (sum > target) {
right--;
} else {
res.push_back({nums[i], nums[j], nums[left], nums[right]});
while (left < right && nums[left] == nums[left + 1]) {
left++;
}
left++;
while (left < right && nums[right] == nums[right - 1]) {
right--;
}
right--;
}
}
}
}
return res;
}
};