leetcode:447. Number of Boomerangs
来源:互联网 发布:it类书籍 编辑:程序博客网 时间:2024/05/16 14:17
原题的输入输出:
**Input:**[[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]]**
直译是找回旋镖的个数。
我将其理解为 :先确定点 i,找到点k,j使得点i、k距离与点ij的距离相等。
class Solution(object): def numberOfBoomerangs(self, points): """ :type points: List[List[int]] :rtype: int """ ans=0 dic=lambda a,b:(a[0]-b[0])**2+(a[1]-b[1])**2 for i in points: for k in points: for j in points: if k!=j and k!=i and j!=i: if dic(i,k)==dic(i,j): ans+=1 return ans
这个代码的问题是,提交会超时,显然三个for循环,这个是o(n*3)的算法。
奇怪的是,当输入[[0,-1],[1,1],[2,0]]时,我认为的输出应该是2,但leetcode的输出却是零。
Tag里面显示用 哈希表来做,所以考虑用字典的方法重做,复杂度是O(n**2)级别的:
class Solution(object): def numberOfBoomerangs(self, points): """ :type points: List[List[int]] :rtype: int """ ans=0 dic=lambda a,b:(a[0]-b[0])**2+(a[1]-b[1])**2 for i in points: d={} for j in points: if j is not i: dist=dic(i,j) d[dist]=d.get(dist,0)+1 for k in d: num=d[k] if num>=2: ans+=num*(num-1) return ans
0 0
- LeetCode 447. Number of Boomerangs
- leetcode:447. Number of Boomerangs
- leetcode 447. Number of Boomerangs
- LeetCode 447. Number of Boomerangs
- 【LeetCode】 447. Number of Boomerangs
- [LeetCode]447. Number of Boomerangs
- [leetcode] 447. Number of Boomerangs
- Leetcode 447. Number of Boomerangs
- LeetCode 447. Number of Boomerangs
- Leetcode-447. Number of Boomerangs
- [LeetCode]447. Number of Boomerangs
- 【Leetcode】447. Number of Boomerangs
- leetcode 447. Number of Boomerangs
- [leetcode]: 447. Number of Boomerangs
- [LeetCode] 447. Number of Boomerangs
- [LeetCode]447.Number of Boomerangs
- leetcode 447. Number of Boomerangs
- LeetCode 447. Number of Boomerangs
- tensorflow (1,n)的tensor 和 (n,1)的tensor 的add
- 最小二乘计算仿射变换
- 为nginx配置https并自签名证书
- 方法(函数)
- java-mvp模式简单实现
- leetcode:447. Number of Boomerangs
- Http中get方法与post方法的区别
- ubuntu开启ssh服务
- C和C++中struct和typedef struct的分析
- 最长公共子序列
- iptables笔记
- 一、andoid基础之四大组件
- Linux Bash shell 使用
- Linux速查