当前位置: 首页 > 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.lryc.cn/news/586400.html

相关文章:

  • CCF CSP第一轮认证一本通
  • 【理念●体系】模板规范篇:打造可标准化复用的 AI 项目骨架
  • 一分钟快速了解Apache
  • Redis集群会有写操作丢失吗?为什么?
  • 动态规划基本操作
  • 从LLM到VLM:视觉语言模型的核心技术与Python实现
  • FastAdmin项目开发三
  • (LeetCode 面试经典 150 题 )3. 无重复字符的最长子串 (哈希表+双指针)
  • 回归(多项式回归)
  • 算法练习6-大数乘法(高精度乘法)
  • Linux系统中部署Redis详解
  • (C++)STL:list认识与使用全解析
  • OpenEuler操作系统测试USB摄像头
  • The Black Heart
  • AOSP Settings模块问题初窥
  • day03-链表part1
  • C++类模版1
  • HTTP和HTTPS部分知识点
  • JAVA开发
  • 【数据结构初阶】--顺序表(三)
  • 广东省省考备考(第四十三天7.12)——数量(第四节课)
  • kettle从入门到精通 第101课 ETL之kettle DolphinScheduler调度kettle
  • 亚矩阵云手机:重构物流供应链,让跨境包裹“飞”得更快更准
  • 配置驱动开发:初探零代码构建嵌入式软件配置工具
  • ESP32使用freertos更新lvgl控件内容
  • TDengine 使用最佳实践(1)
  • Cell2location maps fine-grained cell types in spatial transcriptomics 文章解析
  • 全局唯一id生成
  • JavaScript加强篇——第七章 浏览器对象与存储要点
  • 深度学习-卷积化