题目大意:给定平面上的一些坐标点(1000个),找出这些点能构成多少个正方形,坐标取值不大于20000。
解题思路:若遍历4个点的坐标,肯定超时。因此先取两个点坐标,然后用哈希值查找正方形的另两个点坐标,key = (x*x+y*y)%prime,这里prime取1999(不大于2n的素数),并用链地址法解决地址冲突。因为每个正方形按不同顺序被枚举了4次,所以要除以4。
题目大意:给定平面上的一些坐标点(1000个),找出这些点能构成多少个正方形,坐标取值不大于20000。
解题思路:若遍历4个点的坐标,肯定超时。因此先取两个点坐标,然后用哈希值查找正方形的另两个点坐标,key = (x*x+y*y)%prime,这里prime取1999(不大于2n的素数),并用链地址法解决地址冲突。因为每个正方形按不同顺序被枚举了4次,所以要除以4。