T1:多个数组求交集
看到这个题的第一眼其实思路不太清晰,于是我跳到了第二题(没错,我就是这般没有毅力)然后看了眼第二题我又跳回来了,突然就觉得思路出来了。将二维数组中的所有元素全部用哈希表计数。最后返回元素个数为nums的长度就好了。
class Solution {
public:
vector<int> intersection(vector<vector<int>>& nums) {
unordered_map<int,int>hash;
vector<int>res;
int n=nums.size();
for(int i=0;i<nums.size();i++){
for(auto&c:nums[i]){
hash[c]++;
}
}
for(auto&[c,count]:hash){
if(count==n)res.push_back(c);
}
sort(res.begin(),res.end());
return res;
}
};
T2:统计圆内格点数目
这个题我一开始就直接陷入了一个广度优先搜索里面出不来了。后来发现,其实可以直接枚举,把在范围内的所有点遍历一遍,找出符合要求的就好了。
class Solution {
public:
int countLatticePoints(vector<vector<int>>& circles) {
int count=0;
for(int i=0;i<=200;i++){
for(int j=0;j<=200;j++){
for(auto &c:circles){
int x=c[0],y=c[1],r=c[2];
if((i-x)*(i-x)+(j-y)*(j-y)<=r*r){
count++;
break;
}
}
}
}
return count;
}
};