陵水黎族自治县网站建设_网站建设公司_Ruby_seo优化
2025/12/21 17:03:52 网站建设 项目流程

lecode 1

class Solution {
public:
vector twoSum(vector& nums, int target) {
std::unordered_map<int,int> mp; //注意unordered_map是哈希表,查找时间是O(1),map创建是需要两个元素类型,键值对

    for(int i=0;i<nums.size();i++){                           if(mp.find(target-nums[i])!=mp.end()){                return {i,mp[target-nums[i]]};                    //可以直接用 {} 初始化列表返回。C++11 允许用 {} 初始化对象。std::vector 支持接收 {} 列表的构造函数。编译器很聪明,根据返回值类型自动帮你完成了转换。}else{mp[nums[i]]=i;}}return result;
}

};

lecode454

class Solution {
public:
int fourSumCount(vector& nums1, vector& nums2, vector& nums3, vector& nums4) {
std::unordered_map<int,int> mp;
int result=0;
for(int i:nums1){ //c++11的写法
for(int j:nums2){
mp[i+j]+=1;
}
}
for(int i:nums3){
for(int j:nums4){
if(mp.find(-(i+j))!=mp.end()){
result+=mp[-(i+j)];
}
}
}
return result;

}

};

如果有 A, B, C, D 四个数组。先遍历 A 和 B,统计 A[i] + B[j] 出现的次数,存入 map(Key是和,Value是出现次数)。
再遍历 C 和 D,在 map 中找 -(C[k] + D[l]) 是否存在。如果存在,答案加上对应的次数。复杂度:从暴力的 $O(N^4)$ 优化到 $O(N^2)$。

想查看 map 中有没有 key 为 "apple" 的元素。
if (my_map["apple"] == 1) { ... }
如果 "apple" 根本不存在,[] 操作符会自动创建一个 key 为 "apple",value 为 0 的元素插入 map!这叫副作用。
正确写法:if (my_map.find("apple") != my_map.end()) { ... }
结论:只读查询时,永远用 find(),不要用 []。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询