【leetcode】Max Points on a Line

Max Points on a Line

题目描述:

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

解题思路:

1.首先由这么一个O(n^3)的方法,也就是算出每条线的方程(n^2),然后判断有多少点在每条线上(N)。这个方法肯定是可行的,只是复杂度太高
2.然后想到一个O(N)的,对每一个点,分别计算这个点和其他所有点构成的斜率,具有相同斜率最多的点所构成的直线,就是具有最多点的直线。

注意的地方:

1.重合的点
2.斜率不存在的点

 1 # Definition for a point
 2 class Point:
 3     def __init__(self, a=0, b=0):
 4         self.x = a
 5         self.y = b
 6 
 7 class Solution:
 8     # @param points, a list of Points
 9     # @return an integer
10     def calcK(self,pa, pb):
11         t = ((pb.y - pa.y) * 1.0) / (pb.x - pa.x)
12         return t
13         
14     def maxPoints(self, points):
15         l = len(points)
16         res = 0
17         if l <= 2:
18             return l 
19         for i in xrange(l):
20             same = 0
21             k = {}
22             k['inf'] = 0
23             for j in xrange(l):
24                 if points[j].x == points[i].x and points[j].y != points[i].y:
25                     k['inf'] += 1
26                 elif points[j].x == points[i].x and points[j].y == points[i].y:
27                     same +=1
28                 else:
29                     t = self.calcK(points[j],points[i])
30                     if t not in k.keys():
31                         k[t] = 1
32                     else:
33                         k[t] += 1
34             res = max(res, max(k.values())+same)
35         return res
36         
37 def main():
38     points = []
39     points.append(Point(0,0))
40     points.append(Point(1,1))
41     points.append(Point(1,-1))
42     #points.append(Point(0,0))
43     #points.append(Point(1,1))
44     #points.append(Point(0,0))
45     s = Solution()
46     print s.maxPoints(points)
47     
48     
49 if __name__ == '__main__':
50     main()
51         

 

转载于:https://www.cnblogs.com/MrLJC/p/4118069.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python网页结构分析_Python爬虫基础之网页组成解析

当我们用浏览器访问网站时&#xff0c;每个网页的大不相同&#xff0c;你是否想过它为什么会呈现多种不同的样式呢&#xff1f;就让我们一起了解一下网页的基本组成、结构和节点等内容吧&#xff01;网页的组成 网页可以分为三大部分——HTML、CSS和JavaScript。如果把网页比作…

完全开源im框架_【行业资讯】移动端开源 IM 框架 MobileIMSDK v5.0 发布!

一、更新内容简介本次更新为主要版本更新&#xff0c;强势升级&#xff0c;可同时支持TCP、UDP两种协议&#xff0c;精心封装之下&#xff0c;实现一套API、两种协议同时并存。可能是市面上唯一同时支持UDPTCP两种协议的同类IM框架。二、MobileIMSDK简介MobileIMSDK是一套专为移…

linux的NetworkManager服务(转)

在开启NetworkManager服务的情况下&#xff0c;在终端下敲“service network restart”命令&#xff1a; 正在关闭接口 eth0&#xff1a; 设备状态&#xff1a;3 (断开连接) [确定] 正在关闭接口 eth1&#xff1a; 错误&#xff1a;断开设备 eth1&#xff08;/org/freedesktop…

python使用函数目的_Python函数的概念和使用

Python Python开发 Python语言 Python函数的概念和使用函数 为了便于程序的维护和更好的实现模块化&#xff0c;好的程序都会分解为很多函数。 可以这么说&#xff0c;对于任何的编程语言&#xff0c;函数都是一个非常重要的概念。 python 不仅简化了函数的定义过程&#xff0c…

VirtualBox全屏切换

用VirtualBox的时候&#xff0c;如果设置为全屏&#xff0c;想再切换回来&#xff0c;没有什么菜单&#xff0c;只有通过键盘的快捷键来操作&#xff0c;才可以恢复。 我常常忘掉&#xff0c;所以老是得去找&#xff0c;以后需要记住这几个按键的快捷键。 1.全屏与非全屏切换&a…

python董付国教程_董付国老师python教学——学习笔记(一)

python的对象模型&#xff1a;数字(int float complex)&#xff1a;数字大小没有限制字符串(str)&#xff1a;使用单引号、双引号、三引号作为定界符以字母r或R引导的表示原始字符串 eg&#xff1a;rabc(原始字符串表示里面的转义字符不转义了)字节串(bytes)&#xff1a;以字母…

feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断

本文作者&#xff1a;JLSong 本文链接&#xff1a;https://www.cnblogs.com/songjilong/p/12770999.html1、Hystrix是什么&#xff1f;Hystrix 是一个用于处理分布式系统的延迟和容错的开源库&#xff0c;在分布式系统里&#xff0c;许多依赖不可避免的会调用失败&#xff0c;比…

httpServlet,java web后台服务

1&#xff0c;定时执行的类 package com.utils;import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class MyTimer extends Thread {// 间隔时间&#xff1a;小时private int intervalHours;// 误差(操作所需时间可能导致误差)&am…

mysql 会话级别的参数_PostgreSQL的参数设置级别及查询各级别的参数值

PostgreSQL的参数设置级别及查询各级别的参数值系统级别用户/角色级别用户/角色 数据库级别会话级别1.查询某参数在系统级别的设置直接到postgresql.conf中去过滤2.查询某参数在某用户级别的设置testdb# create user testa password testa;CREATE ROLETime: 85.415 mstestdb# …

【开源项目10】安卓图表引擎AChartEngine

安卓图表引擎AChartEngine(一) - 简介 http://blog.csdn.net/lk_blog/article/details/7645509 安卓图表引擎AChartEngine(二) - 示例源码概述和分析 http://blog.csdn.net/lk_blog/article/details/7642751 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图 http…

python里面print是什么意思_python里print是什么意思

python里print是什么意思,多个,是一个,对象,默认值,一个函数 python里print是什么意思 易采站长站&#xff0c;站长之家为您整理了python里print是什么意思的相关内容。 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明…

mysql 用户管理系统_mysql 用户管理

MySQL账户管理在我们之前登录MySQL的时候我们都是直接使用的root用户&#xff0c;root用户属于数据库系统中的超级管理员&#xff0c;有权限对mysql进行任何想要做的操作。如果在生产环境下操作数据库时也是全部直接使用root账户连接&#xff0c;这就和悬崖边跳舞差不多。所以 …

执行一次怎么会写入两次数据_浅谈 Redis 数据持久化之 AOF 模式

我们知道 Redis 之所以读写快、性能高&#xff0c;得益于它是一种基于内存的数据库&#xff0c;毫无疑问它的操作都几乎都是基于内存。但是内存型数据库也有一个很大的弊端&#xff1a;如果进程崩溃或者服务重启的时候内存数据得不到保存&#xff0c;就会造成数据丢失。为了解决…

poj 2965 The Pilots Brothers' refrigerator

http://poj.org/problem?id2965 poj 1753扩展&#xff0c;dfs枚举&#xff0c;不过加了一个路径。 The Pilots Brothers refrigeratorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 19278 Accepted: 7384 Special JudgeDescription The game “The Pilots Broth…

mysql5.7简要介绍_MySQL 5.7新特性介绍

1. 介绍身处MySQL这个圈子&#xff0c;能够切身地感受到大家对MySQL 5.7的期待和热情&#xff0c;似乎每个人都迫不及待的想要了解、学习和使用MySQL 5.7。那么&#xff0c;我们不禁要问&#xff0c;MySQL 5.7到底做了哪些改进&#xff0c;引入了哪些新功能&#xff0c;性能又提…

数字化转型方法论_双中台:企业数字化转型的核心战略与方法论

当下&#xff0c;绝大部分企业的组织形态、经营模式基本都是垂直闭环型&#xff0c;即围绕一种业务或者管理&#xff0c;其计划、执行、检查、优化的闭环都是独立于企业生态之中。在过去的“局部竞争”、“渠道为王”、“终端为王”的时代&#xff0c;这种组织与经营形式很好地…

java ee自学路线

本站文章为 Kenan 原创&#xff0c;转载请注明转自 Kenan的博客 http://kenan1992.qzone.qq.com 首先声明对于什么java ee的 自学不需要编程的基础&#xff0c;但是需要你的刻苦和努力&#xff0c;付出100%的努力&#xff0c;相信你终会有收获的那一天&#xff01;&#xff01;…

java获取cpu使用率_再一次生产 CPU 高负载排查实践

前言前几日早上打开邮箱收到一封监控报警邮件&#xff1a;某某 ip 服务器 CPU 负载较高&#xff0c;请研发尽快排查解决&#xff0c;发送时间正好是凌晨。其实早在去年我也处理过类似的问题&#xff0c;并记录下来&#xff1a;《一次生产 CPU 100% 排查优化实践》不过本次问题产…

《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...

《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析&#xff0c;绝对的经典分析 原文:《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析&#xff0c;绝对的经典分析献给广大的三国爱好者们&#xff0c;希望喜欢三国的朋友一起讨论&#…

java map取值_Java Set接口 Map 与枚举

Set接口概述一个不包含重复元素的 collection。更确切地讲&#xff0c;set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2&#xff0c;并且最多包含一个 null 元素特点Set接口是无序的 Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。Set可以存储null值,但是nu…