golang力扣leetcode 2013.检测正方形

简介: golang力扣leetcode 2013.检测正方形

2013.检测正方形

2013.检测正方形

题解

用map存边,形参给出一个点,遍历map,又确定一个点,由此就可以推出是不是正方形了

代码

package main
type DetectSquares struct {
  mp map[int]map[int]int
}
func Constructor() DetectSquares {
  return DetectSquares{mp: make(map[int]map[int]int)}
}
func (this *DetectSquares) Add(point []int) {
  x := point[0]
  y := point[1]
  if this.mp[y] == nil {
    this.mp[y] = make(map[int]int)
  }
  this.mp[y][x]++
}
func (this *DetectSquares) Count(point []int) int {
  x := point[0]
  y := point[1]
  result := 0
  for rangeY, mapX := range this.mp {
    if rangeY != y {
      sideLen := y - rangeY
      result += mapX[x] * this.mp[y][x-sideLen] * mapX[x-sideLen]
      result += mapX[x] * this.mp[y][x+sideLen] * mapX[x+sideLen]
    }
  }
  return result
}
目录
相关文章
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
90 0
|
2月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
31 0
|
2月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
55 0
|
4月前
|
Python
【Leetcode刷题Python】473. 火柴拼正方形
LeetCode题目473的Python编程解决方案,题目要求使用给定长度的火柴棒拼成一个正方形,不能折断火柴棒且每根火柴棒必须使用一次,判断是否能拼成正方形。
33 2
|
5月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
35 0
|
5月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
37 0
|
6月前
|
算法 数据可视化 数据挖掘
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
121 2