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

算法第三十一天:贪心算法part05(第八章)

1.合并区间

56. 合并区间 - 力扣(LeetCode)

思路:

 

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x: x[0])res = [intervals[0]]for i in range(1, len(intervals)):last = res[-1]cur = intervals[i]if cur[0] <= last[1]:#有重叠,更新最后一个区间的右边界last[1] = max(last[1], cur[1])else:res.append(cur)return res

2.单调递增的数字

738. 单调递增的数字 - 力扣(LeetCode)

💡 核心思路(贪心 + 回退 + 置9)

  1. 从后往前遍历,找出第一个不满足单调递增的位置;

  2. 将前一个数字减1,因为继续保留这个数字已经违反单调递增;

  3. 从这个位置开始,后面所有的数字都变为9,以保证得到最大合法结果;

  4. 最后将处理完的字符串转换为整数输出。

class Solution:def monotoneIncreasingDigits(self, n: int) -> int:#变成字符串就可以不用除法strNum = str(n)flag = len(strNum)#使用后序遍历来做for i in range(len(strNum)-1, 0, -1):if strNum[i-1] > strNum[i]:strNum = strNum[:i-1] + str(int(strNum[i-1])-1) + strNum[i:]flag = ifor i in range(flag, len(strNum)):strNum = strNum[:i]+'9'+strNum[i+1:] #在字符串里 逐个字符 替换成 '9',字符串是 不可变类型(immutable),每次只能生成一个新字符串。return int(strNum)

 今天结束啦,终于结束贪心算法啦!!

http://www.xdnf.cn/news/1111447.html

相关文章:

  • Qt 多线程编程:单例任务队列的设计与实现
  • 【数据结构初阶】--顺序表(二)
  • 【读书笔记】《C++ Software Design》第一章《The Art of Software Design》
  • 【一起来学AI大模型】RAG系统组件:检索器(LangChain)
  • Python 实战:构建可扩展的命令行插件引擎
  • 试用了10款翻译软件后,我只推荐这一款!完全免费还超好用
  • 挖矿病毒判断与处理 - 入门
  • DBeaver连接MySQL8.0报错Public Key Retrieval is not allowed
  • Redis集群会有写操作丢失吗?为什么?
  • 1. 好的设计原则
  • C++法则21:避免将#include放在命名空间内部。
  • 箭头函数(Arrow Functions)和普通函数(Regular Functions)
  • 【JVM|类加载】第三天
  • 《汇编语言:基于X86处理器》第7章 整数运算(3)
  • AI:机器人未来的形态是什么?
  • 商业智能(BI)系统深度解析
  • 希尔排序和选择排序及计数排序的简单介绍
  • 【学习笔记】Nginx常用安全配置
  • QWidget的属性
  • 华为业务变革项目IPD基本知识
  • 前端面试宝典---项目难点2-智能问答对话框采用虚拟列表动态渲染可视区域元素(10万+条数据)
  • 一文理解缓存的本质:分层架构、原理对比与实战精粹
  • TinyBERT:知识蒸馏驱动的BERT压缩革命 | 模型小7倍、推理快9倍的轻量化引擎
  • 多模态大模型》多模态基础模型》多模态对齐、融合和表示
  • 27. 移除元素
  • 浅谈 Python 中的 yield——yield的返回值与send()的关系
  • 关于数字签名
  • 容器化改造避坑指南:传统应用迁移K8s的10个关键节点(2025实战复盘)
  • 【Go + Gin 实现「双 Token」管理员登录】
  • linux系统----LVS负载均衡集群(NET/DR)模式