当前位置: 首页 > 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.dtcms.com/a/275961.html

相关文章:

  • 回溯算法-数据结构与算法
  • Pythone第二次作业
  • brpc 介绍与安装
  • Redis过期策略与内存淘汰机制面试笔记
  • 数据库连接池及其核心特点
  • AI编程下的需求规格文档的问题及新规范
  • ADSP-1802这颗ADI的最新DSP应该怎么做开发(一)
  • 【Redis实战】Widnows本地模拟Redis集群的2种方法
  • Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
  • Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)
  • Cookie、Session、Token 有什么区别?
  • Spring Boot 中使用 Lombok 进行依赖注入的示例
  • 【离线数仓项目】——电商域DWD层开发实战
  • 【C++ STL 库】解析stack、queue、priority_queue类
  • 中文多智能体金融交易决策框架-TradingAgents-CN
  • 本地安装ClaudeCode全攻略
  • 【Python】多线程详解:从基础概念到实战应用
  • 免费尝试claude code的安利,截至今天可用(7/12)
  • openGauss数据库管理实战指南——基本常用操作总结
  • AI:机器人未来的形态是什么?
  • Cisco ACI 生成Postman CSV 脚本场景
  • 死锁的避免
  • Spring Boot 应用中,配置的加载优先级
  • 锁相环初探
  • CTFHub————Web{信息泄露[Git泄露(Stash、Index)]}
  • Java 接口详解:从基础到高级,掌握面向对象设计的核心契约
  • 使用FastAdmin框架开发二
  • ollama - sqlcoder模型:面向提示词编程(根据用户信息生成sql语句并执行返回结果)
  • SQL新手入门详细教程和应用实例
  • 微信小程序121~130