20240108 Finished
This commit is contained in:
parent
d4132e91d4
commit
e36ae47792
|
@ -13,3 +13,4 @@ mod s0006_zigzag_conversion;
|
||||||
mod s0007_reverse_integer;
|
mod s0007_reverse_integer;
|
||||||
mod s0004_median_of_two_sorted_arrays;
|
mod s0004_median_of_two_sorted_arrays;
|
||||||
mod s0743_network_delay_time;
|
mod s0743_network_delay_time;
|
||||||
|
mod s0447_number_of_boomerangs;
|
||||||
|
|
78
src/solution/s0447_number_of_boomerangs.rs
Normal file
78
src/solution/s0447_number_of_boomerangs.rs
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/**
|
||||||
|
* [447] Number of Boomerangs
|
||||||
|
*
|
||||||
|
* You are given n points in the plane that are all distinct, where points[i] = [xi, yi]. A boomerang is a tuple of points (i, j, k) such that the distance between i and j equals the distance between i and k (the order of the tuple matters).
|
||||||
|
* Return the number of boomerangs.
|
||||||
|
*
|
||||||
|
* <strong class="example">Example 1:
|
||||||
|
*
|
||||||
|
* Input: points = [[0,0],[1,0],[2,0]]
|
||||||
|
* Output: 2
|
||||||
|
* Explanation: The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]].
|
||||||
|
*
|
||||||
|
* <strong class="example">Example 2:
|
||||||
|
*
|
||||||
|
* Input: points = [[1,1],[2,2],[3,3]]
|
||||||
|
* Output: 2
|
||||||
|
*
|
||||||
|
* <strong class="example">Example 3:
|
||||||
|
*
|
||||||
|
* Input: points = [[1,1]]
|
||||||
|
* Output: 0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Constraints:
|
||||||
|
*
|
||||||
|
* n == points.length
|
||||||
|
* 1 <= n <= 500
|
||||||
|
* points[i].length == 2
|
||||||
|
* -10^4 <= xi, yi <= 10^4
|
||||||
|
* All the points are unique.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
// problem: https://leetcode.cn/problems/number-of-boomerangs/
|
||||||
|
// discuss: https://leetcode.cn/problems/number-of-boomerangs/discuss/?currentPage=1&orderBy=most_votes&query=
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
use std::collections::HashMap;
|
||||||
|
impl Solution {
|
||||||
|
pub fn number_of_boomerangs(points: Vec<Vec<i32>>) -> i32 {
|
||||||
|
let mut result = 0;
|
||||||
|
|
||||||
|
for p in &points {
|
||||||
|
let mut values = HashMap::new();
|
||||||
|
|
||||||
|
for q in &points {
|
||||||
|
let dis = (p[0] - q[0]).pow(2) + (p[1] - q[1]).pow(2);
|
||||||
|
|
||||||
|
let c = values.entry(dis).or_insert(0);
|
||||||
|
*c += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (_, v) in &values {
|
||||||
|
// 实际上并不需要,因为最小值为1
|
||||||
|
// 计算的结果为0
|
||||||
|
if *v >= 2 {
|
||||||
|
// result += A_m^2
|
||||||
|
result += (*v) * (*v - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_447() {
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user