Max Points on a Line

要点:这题暴力解是用任何两点确定一条直线,然后对其他点检查是否共线,显然,这里没用空间来存储之前的检查结果,所以time complexity是O(n^3)。这题的难点是如何存储从而实现O(n^2)解。思路是另一种确定一条直线的方法是一点和theta,所以theta可以作为map的key。每次内循环就是检查对于该点下最多共线的点数。
错误点:

  • 双循环loop所有pair的方法,inner loop要找外层index的下一个
  • hashmap是local的,不是global的
  • localmax=1: 这样1个点或者都是相同点可以pass
  • theta的计算:对于java,因为坐标是int,必须先用(double) cast,及时theta类型是double。而python没有类型,用float(x-x0)即可
# Definition for a point.
# class Point(object):
#     def __init__(self, a=0, b=0):
#         self.x = a
#         self.y = bclass Solution(object):def maxPoints(self, points):""":type points: List[Point]:rtype: int"""maxp = 0for i in range(len(points)):localmax = 1hmap = {}x,y = points[i].x,points[i].ysame = 0for j in range(i+1, len(points)):px,py = points[j].x,points[j].yif px-x==0:if py==y:same+=1continueelse:theta = float("inf")else:theta = (py-y)/float(px-x)print i,j, thetaif theta not in hmap:hmap[theta]=2else:hmap[theta]+=1if hmap[theta]>localmax:localmax = hmap[theta]if localmax+same>maxp:maxp = localmax+samereturn maxp

转载于:https://www.cnblogs.com/absolute/p/5560412.html

边工作边刷题:70天一遍leetcode: day 7相关推荐

  1. 边工作边刷题:70天一遍leetcode: day 94-1

    Largest BST Subtree 要点: http://articles.leetcode.com/largest-binary-search-tree-bst-in 这题重点是理解题意,还有道 ...

  2. 边工作边刷题:70天一遍leetcode: day 11-2

    Gas Station 老题,这种circular的题一般都能转化成单向的.比如这题就是用sumDiff来判断是否有解,而start单向递增. class Solution(object):def c ...

  3. 边工作边刷题:70天一遍leetcode: day 92

    House Robber I/II/III 这题代表了单向线性dp的基本pattern: build local best value at each element and track the gl ...

  4. 边工作边刷题:70天一遍leetcode: day 98

    LRU Cache 这是一道leetcode的难题,这种题往往是算法结构很复杂,涉及一个或多个考点算法和数据结构的组合,同时又有很多corner cases要考虑.所以一定要找到合适memorize的 ...

  5. 边工作边刷题:70天一遍leetcode: day 97-2

    Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法.这题简单在只需要count过去300秒的,增加难度可以 ...

  6. 边工作边刷题:70天一遍leetcode: day 73

    Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的.而client要读的bytes(需求)和实际上 ...

  7. 边工作边刷题:70天一遍leetcode: day 67-1

    Rectangle Area 要点:基本思路就是先分开算再减去相交部分,这题的难点是如何检查是否相交和如何算出相交部分的面积. 2d转化为1d:x轴和y轴是orthogonal的.可以分开考虑.这样检 ...

  8. 边工作边刷题:70天一遍leetcode: day 6

    Compare Version Numbers 题本身思路简单没什么可说的.值得一提的是corner case:多出来的0和没有是相同版本,这样最简单的处理是直接对没有的补0.这样因为需要补齐,循环是 ...

  9. 边工作边刷题:70天一遍leetcode: day 11-1

    Clone Graph dfs或者bfs都可以做,这题的要点是hashmap有两个作用:一是图遍历中的visited,另一个是存copy的结点来连接neighbors.hashmap即表示visite ...

最新文章

  1. Science 好文:强化学习之后,机器人学习瓶颈如何突破?
  2. java端模拟http的get、post请求(转)
  3. count 多个字段_一句话实现字段拆分成多行
  4. 1.2 实例:封装图书信息类
  5. iOS之深入解析渲染的底层原理
  6. Java并发编程—AQS原理分析
  7. 第一批升级鸿蒙系统,鸿蒙系统公开了第一批升级名单,果粉认为不地道
  8. windows平台下载编译好的webrtc代码vs2015
  9. java.exe闪退_java 双击jar包闪退或没反应,使用cmd运行提示没有主清单属性,该如何解决...
  10. ajax请求完之前的loading加载
  11. android checkbox点击,android的CheckBox点击全选信息反馈不正常,该如何解决
  12. windows 安装 mongodb
  13. 图像处理黑科技——弯曲矫正、去摩尔纹、切边增强、PS检测
  14. 前端POST请求下载文件
  15. Qlv转换MP4格式 让你不再错过
  16. elasticsearch7.6 词频统计
  17. 滴滴android wear,滴滴货运app下载_滴滴货运apk最新安卓版下载v5.4.0_3DM手游
  18. 前端本地静态模板下载功能
  19. jetbrains(IDEA/PyCharm)官网地址打不开
  20. 百度贴吧前负责人:做产品16年,我有9条心得

热门文章

  1. 中webgl解析json_WebGL蒙皮(下)
  2. LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)
  3. LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)
  4. LeetCode 983. 最低票价(动态规划)
  5. LeetCode 888. 公平的糖果交换(哈希set)
  6. 【机器学习】分类算法sklearn-朴素贝叶斯算法
  7. 7.MongoDB与python交互
  8. 7.排序、聚合函数、分组查询
  9. python中的生成器
  10. java 类的高级特性_java程序-类的高级特性