题目:
题解:
思路:注意到圆心坐标最大为100,半径最大也为100,那么直接枚举所有横纵坐标小于等于200的点,然后判断这个点是否在某个圆内。可以先将所有圆按半径由大到小进行排序,这样可以更早地遇到包含当前枚举的点的圆。
代码如下:
class Solution {
public:
// 思路:注意到圆心坐标最大为100,半径最大也为100,那么直接枚举所有横纵坐标小于等于200的点,然后判断这个点是否在某个圆内
// 可以先将所有圆按半径由大到小进行排序,这样可以更早地遇到包含当前枚举的点的圆
int countLatticePoints(vector<vector<int>>& g) {
sort(g.begin(),g.end(),[](const auto& a,const auto& b){
return a[2]>b[2];
});
int res=0;
for(int i=0;i<201;++i)
for(int j=0;j<201;++j)
for(auto& it:g)
// (x-i)^2+(y-j)^2<=r^2 表明(i,j)在圆心为(x,y)、半径为r的圆内
if((it[0]-i)*(it[0]-i)+(it[1]-j)*(it[1]-j)<=it[2]*it[2]){
res++;
break;
}
return res;
}
};