LeetCode 2280. 表示一个折线图的最少线段数(几何)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个二维整数数组 stockPrices ,其中 stockPrices[i] = [dayi, pricei] 表示股票在 dayi 的价格为 pricei 。
折线图 是一个二维平面上的若干个点组成的图,横坐标表示日期,纵坐标表示价格,折线图由相邻的点连接而成。
比方说下图是一个例子:
在这里插入图片描述

请你返回要表示一个折线图所需要的 最少线段数

示例 1:

在这里插入图片描述

输入:stockPrices = [[1,7],[2,6],[3,5],[4,4],
[5,4],[6,3],[7,2],[8,1]]
输出:3
解释:
上图为输入对应的图,横坐标表示日期,纵坐标表示价格。
以下 3 个线段可以表示折线图:
- 线段 1 (红色)从 (1,7)(4,4) ,经过 (1,7)(2,6)(3,5)(4,4)- 线段 2 (蓝色)从 (4,4)(5,4)- 线段 3 (绿色)从 (5,4)(8,1) ,经过 (5,4)(6,3)(7,2)(8,1) 。
可以证明,无法用少于 3 条线段表示这个折线图。

示例 2:
在这里插入图片描述

输入:stockPrices = [[3,4],[1,2],[7,8],[2,3]]
输出:1
解释:
如上图所示,折线图可以用一条线段表示。提示:
1 <= stockPrices.length <= 10^5
stockPrices[i].length == 2
1 <= dayi, pricei <= 10^9
所有 dayi 互不相同 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-lines-to-represent-a-line-chart
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 排序,按横坐标排序
  • 计算每相邻的3个点之间的斜率是否一样
    y2−y1x2−x1=y1−y0x1−x0⇒dy2∗dx1=dy1∗dx2\frac{y_2-y_1}{x_2-x_1} = \frac{y_1-y_0}{x_1-x_0} \Rightarrow dy_2*dx_1 = dy_1*dx_2x2x1y2y1=x1x0y1y0dy2dx1=dy1dx2
class Solution:def minimumLines(self, stockPrices: List[List[int]]) -> int:n = len(stockPrices)if n <= 2:return n-1ans = 1stockPrices.sort()for i in range(2, n):dy0, dx0 = stockPrices[i][1]-stockPrices[i-1][1], stockPrices[i][0]-stockPrices[i-1][0]dy1, dx1 = stockPrices[i-1][1]-stockPrices[i-2][1], stockPrices[i-1][0]-stockPrices[i-2][0]if dy0*dx1 != dy1*dx0:ans += 1return ans

376 ms 41.2 MB Python3


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

一、mongodb数据库系列——介绍和安装 简单使用 增删改查

一、Mongodb的介绍和安装 学习目标 了解 非关系型数据库的优势了解 mongodb的安装 1. mongodb的介绍 1.1 什么是mongodb mongodb 是一个功能最丰富的NoSQL非关系数据库。由 C 语言编写。mongodb 本身提供S端存储数据&#xff0c;即server&#xff1b;也提供C端操作处理&…

第一次ActiveX Fuzzing测试

接着上一篇的看雪Exploit me试题。 这道题给出了一个ActiveX的DLL&#xff0c;挖掘这个DLL中的漏洞。 由于从来没有接触过ActiveX的Fuzzing&#xff0c;所以找了一些文章来看。自己动手试验了一下。 根据提示&#xff0c;使用了Comraider来作为Fuzzing工具。这个工具比较老了&a…

二、mongodb数据库系列——聚合操作 索引操作 权限管理

一、mongodb的聚合操作 学习目标 了解 mongodb的聚合原理掌握 mongdb的管道命令掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道&#xff0c;每个文档通过一个由多个阶段&#xff08;stage&#xff09;组成的管道&#xff0c;可以对每…

LeetCode 2283. 判断一个数的数字计数是否等于数位的值

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始长度为 n 的字符串 num &#xff0c;它只包含数字。 如果对于 每个 0 < i < n 的下标 i &#xff0c;都满足数位 i 在 num 中出现了 num[i]次&#xff0c;那么请你返回 true &#xff0c;否则返回 false 。 示例 …

LeetCode 2284. 最多单词数的发件人

文章目录1. 题目2. 解题1. 题目 给你一个聊天记录&#xff0c;共包含 n 条信息。给你两个字符串数组 messages 和 senders &#xff0c;其中 messages[i] 是 senders[i] 发出的一条 信息 。 一条 信息 是若干用单个空格连接的 单词 &#xff0c;信息开头和结尾不会有多余空格…

三、mongodb数据库系列——mongodb和python交互 总结

一、mongodb和python交互 学习目标 掌握 mongdb和python交互的增删改查的方法掌握 权限认证的方式使用pymongo模块 1. mongdb和python交互的模块 pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo 2. 使用pymongo 2.1 导入pymongo并选择要操作的…

Proactor设计模式:单线程高并发

Boost::Asio为同步和异步操作提供了并行支持&#xff0c;异步支持基于前摄器模式&#xff0c;这种模式的优点和缺点可能比只同步或反应器方法要低。让我们检查一下Boost::Asio是如何实现前摄器模式的&#xff0c;没有引用基于平台的细节。前摄器设计模式&#xff0c;改编自POSA…

一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用

scrapy的概念和流程 学习目标&#xff1a; 了解 scrapy的概念了解 scrapy框架的作用掌握 scrapy框架的运行流程掌握 scrapy中每个模块的作用 1. scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 Scrapy 使…

LeetCode 2285. 道路的最大总重要性

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示一个国家里的城市数目。城市编号为 0 到 n - 1 。 给你一个二维整数数组 roads &#xff0c;其中 roads[i] [ai, bi] 表示城市 ai 和 bi 之间有一条 双向 道路。 你需要给每个城市安排一个从 1 到 n 之间的整…

二、scrapy爬虫框架——scrapy构造并发送请求

scrapy数据建模与请求 学习目标&#xff1a; 应用 在scrapy项目中进行建模应用 构造Request对象&#xff0c;并发送请求应用 利用meta参数在不同的解析函数中传递数据 1. 数据建模 通常在做项目的过程中&#xff0c;在items.py中进行数据建模 1.1 为什么建模 定义item即提前…

LeetCode 2287. 重排字符形成目标字符串

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排&#xff0c;得到若干新的字符串。 从 s 中取出字符并重新排列&#xff0c;返回可以形成 target 的 最大 副本数。 示例 1&#xff1a; 输入&#xff1a;s &…

Python自动化办公——xlrd、xlwt读写Excel

一、xlrd、xlwt读写Excel 1、读操作 import xlrd# 1、打开工作本workbook xlsx xlrd.open_workbook(r.\7月下旬入库表.xlsx)# 2、打开需要操作的表sheet table xlsx.sheet_by_index(0) # table xlsx.sheet_by_name(7月下旬入库表)# 3、读取指定单元格的数据 print(table.c…

LeetCode 2288. 价格减免

文章目录1. 题目2. 解题1. 题目 句子 是由若干个单词组成的字符串&#xff0c;单词之间用单个空格分隔&#xff0c;其中每个单词可以包含数字、小写字母、和美元符号 $ 。 如果单词的形式为美元符号后跟着一个非负实数&#xff0c;那么这个单词就表示一个价格。 例如 "$…

UWP滑动后退

经过近些年智能手机App的不断发展&#xff0c;用户已经不仅仅满足于功能上的需求。UI、设计等非功能点逐渐在App体验中占了大多数的分数。不知从何时起&#xff0c;滑动手势就成为了App的一个标配。他不仅仅是一个功能&#xff0c;更是一个UI设计。其有以下几个优点&#xff1a…

PyQt5 高级界面控制(表格、树、tab、dock、scrollbar、多文档界面)

文章目录1. 表格与树1.1 QTableView1.2 QListView1.3 QListWidget1.4 QTableWidget表根据界面宽度自动伸缩禁止编辑单击某单元&#xff0c;使之默认选中整行设置宽高度与内容相匹配是否显示表头单元格中放置控件输入行号&#xff0c;快速定位行设置颜色加粗字体排序文本对齐合并…

使用pymysql进行数据库的增删改查

使用pymysql进行数据库的增删改查&#xff1a; import pymysqldatabase pymysql.connect(127.0.0.1,root,root,jxgl,charsetutf8)# 初始化指针 cursor database.cursor()# 增 # sql "insert into students(s_no,s_name,sex,birthday,D_NO,address,phone) VALUES (1230…

PyQt5 高级界面控制(多线程、网页交互、调用JavaScript)

文章目录1. 多线程1.1 QTimer1.2 QThread界面卡住例子分离UI和工作线程1.3 事件处理2. 网页交互显示本地 html显示 html 代码调用 JavaScriptJavaScript 调用 PyQt代码learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcom…

读写Excel 用 xlsxwriter,openpyxl 更灵活

一、xlsxwriter的使用&#xff1a; # import xlwt # # workbook xlwt.Workbook() # sheet0 workbook.add_sheet(sheet0) # for i in range(0,300): # sheet0.write(0,i,i) # workbook.save(number.xls)# 以上代码运行会报错&#xff0c;因为xlwt不支持超过256列的表格im…

LeetCode 2293. 极大极小游戏

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;其长度是 2 的幂。 对 nums 执行下述算法&#xff1a; 设 n 等于 nums 的长度&#xff0c;如果 n 1 &#xff0c;终止 算法过程。否则&#xff0c;创建 一个新的整数数组 newNums &#x…

LeetCode 2294. 划分数组使最大差为 K

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。你可以将 nums 划分成一个或多个 子序列 &#xff0c;使 nums 中的每个元素都 恰好 出现在一个子序列中。 在满足每个子序列中最大值和最小值之间的差值最多为 k 的前提下&#xff0c;返回需要划分的 最…