当前位置: 首页 > news >正文

代码随想录27期|Python|Day37|56.合并区间|738.单调递增的数字

56. 合并区间

 简单题,需要判断上一个区间右边界和下一个区间左边界的大小关系,并作合并。步骤如下:

1、对区间按照区间左端点进行排序,从小到大;

2、将第一个区间保存在res内,并循环判断res内最后一个区间的右端点和左端点的大小关系;

3、如果大于,则取两个区间右端点较大者为合并后的区间右端点;如果小于,则说明区间没有重合,直接放入res即可。

注意:每次从res中取出的是最后一个区间(索引为-1),不是循环interval对应的i-1(考虑一个从头合并到尾的区间,res中实际上就这一个大区间)。

class Solution(object):def merge(self, intervals):""":type intervals: List[List[int]]:rtype: List[List[int]]"""res = []if len(intervals) == 0:return resintervals.sort(key=lambda x: x[0])res.append(intervals[0])for i in range(1, len(intervals)):if res[-1][1] >= intervals[i][0]:  ## 注意这里是res的最后一个,不是i-1个,注意不能和interval的i对齐res[-1][1] = max(res[-1][1], intervals[i][1])else:res.append(intervals[i])return res

738. 单调递增的数字

本题不难,想通一个事实是关键:

一个数字,当不满足后一位大于等于前一位的时候,最大值是多少?

答案是前一位-1,后一位变成9(因为9是最大的数字)。

比如,322变成319再变成299,可以注意到每次操作的都是两位,所以可以使用贪心方法。步骤如下:

1、从后往前比较是关键,因为需要保证最后一位是最大的(最大就是9);

2、比较两位大小,如果不满足递增,前一位-1,后一位变成9;

进一步说,出现过不满足情况的数字,其输出都满足前一位-1,后面不管几位全是9。

为了方便操作,将int转化为str类型(由于ASCII码在数字字符上是连续的,所以可以直接比较大小)。则上述过程的第二步实际上为:

取出前一位前面的切片,前一位-1,后面几位全部为9。最后拼接在一起。

class Solution(object):def monotoneIncreasingDigits(self, n):""":type n: int:rtype: int"""numstr = str(n)for i in range(len(numstr)-1, 0 ,-1):if numstr[i] < numstr[i-1]:numstr = numstr[:i-1] + str(int(numstr[i-1])-1) + '9' * (len(numstr)-i)return int(numstr)

Day37完结!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SSM项目学习:用xml配置文件或注解开发实现控制反转和依赖注入
  • 调度系统之Oozie
  • 【Flutter 自定义字体】等宽字体等
  • 《2024华数杯》C题第四问 模型建立+优化算法
  • 鸿蒙(API 12 Beta2版)NDK开发【LLDB高性能调试器】调试和性能分析
  • C++入门基础(二)
  • C++数学库GNU Scientific Library (GSL)
  • PXE 服务器搭建——启动界面设计实验
  • 1.MySQL面试题之innodb如何解决幻读
  • 基于Spring前后端分离版本的论坛
  • 2024/8/4 汇川变频器低压产品分类选型
  • 174.地下城游戏——LeetCode
  • [windows10]win10永久禁用系统自动更新操作方法
  • 职业生涯阶段总结3:转眼毕业三年
  • Vue路由入门学习
  • 分享一款快速APP功能测试工具
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • CSS 提示工具(Tooltip)
  • Git学习与使用心得(1)—— 初始化
  • iOS 系统授权开发
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Linux链接文件
  • Mysql5.6主从复制
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Mysql数据库的条件查询语句
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 产品三维模型在线预览
  • 对象引论
  • 番外篇1:在Windows环境下安装JDK
  • 前端存储 - localStorage
  • 区块链将重新定义世界
  • 如何选择开源的机器学习框架?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 想使用 MongoDB ,你应该了解这8个方面!
  • ionic入门之数据绑定显示-1
  • postgresql行列转换函数
  • 交换综合实验一
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 职场生活之道:善于团结
  • #14vue3生成表单并跳转到外部地址的方式
  • #pragma multi_compile #pragma shader_feature
  • $.ajax()
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (苍穹外卖)day03菜品管理
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (黑马点评)二、短信登录功能实现
  • (南京观海微电子)——I3C协议介绍
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十八)三元表达式和列表解析
  • (四)js前端开发中设计模式之工厂方法模式
  • (四)opengl函数加载和错误处理