美文网首页Go算法
(14)Go查找表求回旋镖数量

(14)Go查找表求回旋镖数量

作者: 哥斯拉啊啊啊哦 | 来源:发表于2019-05-14 13:31 被阅读0次
1)暴力解法:时间复杂度O(n^3)

2)查找表
通过题目可以看出每一个点 i 都是一个枢纽,对于每个点 i,遍历其余点到 i 的距离,存储到查找表
时间复杂度O(n^2)
空间复杂度为O((n-1)+(n-2)+...+1) = O(n)
实现
// 时间复杂度O(n^2)
// 空间复杂度最大为O((n-1)+(n-2)+...+1) = O(n)
func numberOfBoomerangs(points [][]int) int {
    count := 0

    for i1, v1 := range points {
        // m[key]val: key为值,val为出现的次数
        m := make(map[int]int)

        for i2, v2 := range points {
            if i1 != i2 {
                m[distance(v1, v2)]++
            }
        }

        // val>1,则有 val * (val - 1) 个三元组
        for _, v := range m {
            if v > 1 {
                count += v * (v - 1)
            }
        }
    }

    return count
}

// 计算两点距离的平方
func distance(a, b []int) int {
    return (a[0]-b[0])*(a[0]-b[0]) + (a[1]-b[1])*(a[1]-b[1])
}

提交leetcode,通过

相关文章

  • (14)Go查找表求回旋镖数量

    提交leetcode,通过

  • LeetCode 查找表专题 6:灵活选择键值:Number o

    例题:LeetCode 第 477 题:回旋镖的数量 传送门:447. 回旋镖的数量。 给定平面上 n 对不同的点...

  • 回旋镖的数量

    题目描述 给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的...

  • 回旋镖的数量

    题目描述:给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的...

  • 1.数据结构-字典(哈希表)

    2. 447. 回旋镖的数量[https://leetcode-cn.com/problems/number-of...

  • T447、回旋镖数量

    给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i...

  • 447. 回旋镖的数量

    给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由...

  • 447. 回旋镖的数量

    2021-09-13 LeetCode每日一题 链接:https://leetcode-cn.com/proble...

  • 回旋镖

    心里有点堵,自己一直这么信任,这么支持的人,原来就是在背后传言我的人!承认我非贤圣,乍一听到,心里那种感觉...

  • 回旋镖

    “妈妈,你能瞧得上**吗?”大妞问我的这个人是她以前的同学,她知道我不是很喜欢这个同学。 “嗯,怎么说,我是不喜欢...

网友评论

    本文标题:(14)Go查找表求回旋镖数量

    本文链接:https://www.haomeiwen.com/subject/silsaqtx.html