今天在leetcode写了一个题 两数之和
这是AC代码
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> a; map<int,int> p; for (int i=0;i<nums.size();i++) p[nums[i]]=i; map<int,int>::iterator z; if (p.count(-6)==0) cout<<"fk"<<endl; for (int i=0;i<nums.size();i++) if (p.count(target-nums[i])==1 && p[target-nums[i]]!=i) { cout<<p.count(target-nums[i])<<endl; cout<<i<<" "<<target-nums[i]<<endl; a.push_back(i); a.push_back(p[target-nums[i]]); break; } return a; } };
这是WA代码
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> a; map<int,int> p; for (int i=0;i<nums.size();i++) p[nums[i]]=i; for (int i=0;i<nums.size();i++) if (p[target-nums[i]]!=i&&p.count(target-nums[i])==1) { a.push_back(i); a.push_back(p[target-nums[i]]); break; } return a; } };
发现了一个map count的问题
他但凡只要使用过p[a] ,不管有没有赋值,都默认已经有这个元素了,倘若没有赋值,则为0