1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/检测正方形 [detect-squares].html

52 lines
2.5 KiB
HTML
Raw Normal View History

2022-03-27 20:38:29 +08:00
<p>给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:</p>
<ul>
<li><strong>添加</strong> 一个在数据流中的新点到某个数据结构中<strong></strong>可以添加 <strong>重复</strong> 的点,并会视作不同的点进行处理。</li>
<li>给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 <strong>面积为正</strong><strong>轴对齐正方形</strong> <strong>统计</strong> 满足该要求的方案数目<strong></strong></li>
</ul>
<p><strong>轴对齐正方形</strong> 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。</p>
<p>实现 <code>DetectSquares</code> 类:</p>
<ul>
<li><code>DetectSquares()</code> 使用空数据结构初始化对象</li>
<li><code>void add(int[] point)</code> 向数据结构添加一个新的点 <code>point = [x, y]</code></li>
<li><code>int count(int[] point)</code> 统计按上述方式与点 <code>point = [x, y]</code> 共同构造 <strong>轴对齐正方形</strong> 的方案数。</li>
</ul>
<p>&nbsp;</p>
<p><strong>示例:</strong></p>
<img alt="" src="https://assets.leetcode.com/uploads/2021/09/01/image.png" style="width: 869px; height: 504px;" />
<pre>
<strong>输入:</strong>
["DetectSquares", "add", "add", "add", "count", "count", "add", "count"]
[[], [[3, 10]], [[11, 2]], [[3, 2]], [[11, 10]], [[14, 8]], [[11, 2]], [[11, 10]]]
<strong>输出:</strong>
[null, null, null, null, 1, 0, null, 2]
<strong>解释:</strong>
DetectSquares detectSquares = new DetectSquares();
detectSquares.add([3, 10]);
detectSquares.add([11, 2]);
detectSquares.add([3, 2]);
detectSquares.count([11, 10]); // 返回 1 。你可以选择:
// - 第一个,第二个,和第三个点
detectSquares.count([14, 8]); // 返回 0 。查询点无法与数据结构中的这些点构成正方形。
detectSquares.add([11, 2]); // 允许添加重复的点。
detectSquares.count([11, 10]); // 返回 2 。你可以选择:
// - 第一个,第二个,和第三个点
// - 第一个,第三个,和第四个点
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>point.length == 2</code></li>
<li><code>0 &lt;= x, y &lt;= 1000</code></li>
<li>调用&nbsp;<code>add</code><code>count</code><strong>总次数</strong> 最多为 <code>5000</code></li>
</ul>