一、
这个题很单纯,想不出写什么,记一下代码。
class DetectSquares {
public:
unordered_map<int ,unordered_map<int ,int>> map;
DetectSquares() {
}
void add(vector<int> point) {
int x= point[0],y=point[1];
map[y][x]++;
}
int count(vector<int> point) {
int res=0;
int x = point[0],y=point[1];
if(!map.count(y))
{
return 0;
}
unordered_map<int,int> &cnt = map[y];
for(auto & [col,colCnt] : map)
{
if(col != y)
{
int d = col - y;
res += (colCnt.count(x) ? colCnt[x] : 0) * (cnt.count(x + d) ? cnt[x + d] : 0) *
(colCnt.count(x + d)? colCnt[x + d] : 0);
res += (colCnt.count(x) ? colCnt[x] : 0) * (cnt.count(x - d) ? cnt[x - d] : 0) *
(colCnt.count(x - d) ? colCnt[x - d] : 0);
}
}
return res;
}
};
/**
* Your DetectSquares object will be instantiated and called as such:
* DetectSquares* obj = new DetectSquares();
* obj->add(point);
* int param_2 = obj->count(point);
*/
二、26号一直在写dfs,图论复习比预想慢一些,这几天先集中精力把dfs找到感觉。