边工作边刷题:70天一遍leetcode: day 7
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相关推荐
- 边工作边刷题:70天一遍leetcode: day 94-1
Largest BST Subtree 要点: http://articles.leetcode.com/largest-binary-search-tree-bst-in 这题重点是理解题意,还有道 ...
- 边工作边刷题:70天一遍leetcode: day 11-2
Gas Station 老题,这种circular的题一般都能转化成单向的.比如这题就是用sumDiff来判断是否有解,而start单向递增. class Solution(object):def c ...
- 边工作边刷题:70天一遍leetcode: day 92
House Robber I/II/III 这题代表了单向线性dp的基本pattern: build local best value at each element and track the gl ...
- 边工作边刷题:70天一遍leetcode: day 98
LRU Cache 这是一道leetcode的难题,这种题往往是算法结构很复杂,涉及一个或多个考点算法和数据结构的组合,同时又有很多corner cases要考虑.所以一定要找到合适memorize的 ...
- 边工作边刷题:70天一遍leetcode: day 97-2
Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法.这题简单在只需要count过去300秒的,增加难度可以 ...
- 边工作边刷题:70天一遍leetcode: day 73
Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的.而client要读的bytes(需求)和实际上 ...
- 边工作边刷题:70天一遍leetcode: day 67-1
Rectangle Area 要点:基本思路就是先分开算再减去相交部分,这题的难点是如何检查是否相交和如何算出相交部分的面积. 2d转化为1d:x轴和y轴是orthogonal的.可以分开考虑.这样检 ...
- 边工作边刷题:70天一遍leetcode: day 6
Compare Version Numbers 题本身思路简单没什么可说的.值得一提的是corner case:多出来的0和没有是相同版本,这样最简单的处理是直接对没有的补0.这样因为需要补齐,循环是 ...
- 边工作边刷题:70天一遍leetcode: day 11-1
Clone Graph dfs或者bfs都可以做,这题的要点是hashmap有两个作用:一是图遍历中的visited,另一个是存copy的结点来连接neighbors.hashmap即表示visite ...
最新文章
- Science 好文:强化学习之后,机器人学习瓶颈如何突破?
- java端模拟http的get、post请求(转)
- count 多个字段_一句话实现字段拆分成多行
- 1.2 实例:封装图书信息类
- iOS之深入解析渲染的底层原理
- Java并发编程—AQS原理分析
- 第一批升级鸿蒙系统,鸿蒙系统公开了第一批升级名单,果粉认为不地道
- windows平台下载编译好的webrtc代码vs2015
- java.exe闪退_java 双击jar包闪退或没反应,使用cmd运行提示没有主清单属性,该如何解决...
- ajax请求完之前的loading加载
- android checkbox点击,android的CheckBox点击全选信息反馈不正常,该如何解决
- windows 安装 mongodb
- 图像处理黑科技——弯曲矫正、去摩尔纹、切边增强、PS检测
- 前端POST请求下载文件
- Qlv转换MP4格式 让你不再错过
- elasticsearch7.6 词频统计
- 滴滴android wear,滴滴货运app下载_滴滴货运apk最新安卓版下载v5.4.0_3DM手游
- 前端本地静态模板下载功能
- jetbrains(IDEA/PyCharm)官网地址打不开
- 百度贴吧前负责人:做产品16年,我有9条心得
热门文章
- 中webgl解析json_WebGL蒙皮(下)
- LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)
- LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)
- LeetCode 983. 最低票价(动态规划)
- LeetCode 888. 公平的糖果交换(哈希set)
- 【机器学习】分类算法sklearn-朴素贝叶斯算法
- 7.MongoDB与python交互
- 7.排序、聚合函数、分组查询
- python中的生成器
- java 类的高级特性_java程序-类的高级特性