描述

You are given an array coordinates, coordinates[i] = [x, y], where [x, y] represents the coordinate of a point. Check if these points make a straight line in the XY plane.

Example 1:

Input: coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
Output: true

Example 2:

Input: coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]]
Output: false

Note:

2 <= coordinates.length <= 1000
coordinates[i].length == 2
-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
coordinates contains no duplicate point.

解析

根据题意,就是判断坐标系中给出的点是不是都在一条直线上,如果 coordinates 中只有两个点直接返回 True ,因为平面中的两个点肯定在一条直线上。

如果有多个点,先计算出前两个点组成直线的斜率 p ,然后从第三个点开始遍历,计算它与第二点组成的直线的斜率是否和 p 相等,如果不等则直接返回 False ;

接着判断第四个点与第三个点组成的直线的斜率是否和 p 相等,如果不等则直接返回 False ,以此类推,如果遍历结束都在一条直线上返回 True 。

【注意】计算斜率的时候,当两个点的 y 都相等的时候斜率为 0,当两个点的 x 相等的时候斜率为一个大数,其他情况直接出斜率即可。另外程序中判断小数是否相等需要用到 abs(a-b) > 0.0001 。

解答

class Solution(object):def checkStraightLine(self, coordinates):""":type coordinates: List[List[int]]:rtype: bool"""if len(coordinates)==2:return Truedef cal_slope(p1, p2):x, y = p1[0], p1[1]x_, y_ = p2[0], p2[1]deltay = y_ - ydeltax = x_ - xif deltax == 0:return float("inf")elif deltay == 0:return 0else:return deltay/deltaxp = cal_slope(coordinates[0], coordinates[1])for i in range(2,len(coordinates)):tmp = cal_slope(coordinates[i-1], coordinates[i])if abs(tmp- p) > 0.0001:return Falsereturn True

运行结果

Runtime: 32 ms, faster than 100.00% of Python online submissions for Check If It Is a Straight Line.
Memory Usage: 13.8 MB, less than 73.10% of Python online submissions for Check If It Is a Straight Line.

原题链接:https://leetcode.com/problems/check-if-it-is-a-straight-line/

您的支持是我最大的动力

leetcode 1232. Check If It Is a Straight Line(python)相关推荐

  1. leetcode 1662. Check If Two String Arrays are Equivalent(python)

    描述 Given two string arrays word1 and word2, return true if the two arrays represent the same string, ...

  2. 【LeetCode】222. Count Complete Tree Nodes 解题报告(Python)

    [LeetCode]222. Count Complete Tree Nodes 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个 ...

  3. 【LeetCode】954. Array of Doubled Pairs 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/friends-o ...

  5. 【LeetCode】528. Random Pick with Weight 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/random-pi ...

  6. LeetCode 1011. Capacity To Ship Packages Within D Days(python)

    1011. Capacity To Ship Packages Within D Days Capacity To Ship Packages Within D Days python solutio ...

  7. leetcode 1005. Maximize Sum Of Array After K Negations(python)

    描述 Given an array nums of integers, we must modify the array in the following way: we choose an i an ...

  8. python找出只出现一次的数字_【LeetCode 136】只出现一次的数字(Python)

    题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 一.思路 通过遍历 ...

  9. LeetCode:309. 最佳买卖股票时机含冷冻期(python)

    LeetCode:309. 最佳买卖股票时机含冷冻期(python) 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能 ...

  10. leetcode 115. Distinct Subsequences Hard | 115. 不同的子序列(动态规划)

    题目 https://leetcode.com/problems/distinct-subsequences/ 题解 方法1:递归(超时) 这种解法比较容易理解,时间复杂度没算出来,但肯定不是 O(m ...

最新文章

  1. JS中window.event事件使用详解
  2. HTML5 新增结构元素分为主体结构元素和非主体结构元素
  3. 七十五、SpringBoot 的数据缓存cache(二)
  4. MySQL和SQL Server数据库基本语句总结(二)
  5. 1.1 Python 安装
  6. linux批量文件编码转换,Linux系统批量转换文件编码脚本
  7. java类加载器正确的是_Java面试题:面向对象,类加载器,JDBC, Spring 基础概念
  8. Kafka 安装与部署(单机版)与kafkaDemo调试测试(包含JAVA Demo)
  9. RAID6结构原理详解
  10. Keras学习---数据预处理篇
  11. SoapUI接口测试-基本操作
  12. usb口拒绝访问_插u盘拒绝访问怎么办_win7u盘插电脑上显示拒绝访问的解决方法...
  13. 推理和论证(证明)的区别
  14. 秋招跳槽求职P8架构大咖整理“Java后端技术面试笔记”,目标是成为Java架构师,这条件不过分吧
  15. HTML的表单及框架
  16. 计算机管理器鼠标不见了怎么办,电脑的鼠标光标消失了
  17. Android添加蓝牙音响功能
  18. 4K电视与4K显示器区别
  19. 手推车轮 trolley wheel
  20. 证券公司信息化3-经纪业务收入大概是个什么水平?一个普通投资者的开户过程是怎样的?

热门文章

  1. 束缚游戏 html,束缚游戏
  2. 2021 HTML面试题(最新)不定时更新
  3. android 怎么改变字体颜色,安卓系统字体颜色修改教程
  4. 一起avi文件播放时没有图像问题的解决(tscc.exe)
  5. win10安装php8.0
  6. 通过搜狐微博API,发带图片的微博
  7. 【Termiology】常见术语的检索
  8. 路由器默认IP地址和猫IP冲突的解决方法
  9. 《阿里巴巴Java开发手册(正式版)》--安全规约
  10. 城阳区人才共有产权住房细则