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

day31 第八章 贪心算法 part05

56. 合并区间

先排序,再合并
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x:x[0])merged = []# merged.append(intervals[0])for i in range(len(intervals)):if not merged or intervals[i][0]>merged[-1][1]:merged.append(intervals[i])else:merged[-1][1] = max(merged[-1][1], intervals[i][1])return merged

738.单调递增的数字

"本题只要想清楚个例,例如98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]减一,strNum[i]赋值9,这样这个整数就是89。就可以很自然想到对应的贪心解法了。

想到了贪心,还要考虑遍历顺序,只有从后向前遍历才能重复利用上次比较的结果。

最后代码实现的时候,也需要一些技巧,例如用一个flag来标记从哪里开始赋值9。" ---《代码随想录》

class Solution:def monotoneIncreasingDigits(self, n: int) -> int:str_n = list(str(n))flag = len(str_n)# print(str_n)# result = []for i in range(len(str_n)-1, 0, -1):if str_n[i] < str_n[i-1]:flag = istr_n[i-1] = chr(ord(str_n[i-1])-1)for i in range(flag, len(str_n)):str_n[i] = '9'return int(''.join(str_n))

968.监控二叉树 (可跳过)

思路:监控都不在叶子节点,所以从底向上遍历,后序遍历,分3种情况,最后根节点也要判断一下。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
# 1有监控,0无覆盖,2有覆盖
class Solution:result = 0def traversal(self, node: Optional[TreeNode]) -> int:if not node:return 2left = self.traversal(node.left)right = self.traversal(node.right)if left == 0 or right == 0:self.result += 1return 1if left == 1 or right == 1:return 2if left == 2 and right == 2:return 0def minCameraCover(self, root: Optional[TreeNode]) -> int:self.result = 0if self.traversal(root)==0:self.result += 1return self.result

http://www.dtcms.com/a/163832.html

相关文章:

  • 生活需要一些思考
  • ppt箭头素材图片大全
  • 如何提升自我价值?
  • std::string的底层实现 (详解)
  • [4-06-09].第10节:自动配置- 分析@SpringBootApplication启动类
  • 防爆风扇储能轴流风机风量风压如何保障通风安全?
  • java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
  • Lucene 分词工具全解析与对比指南
  • Spring AI在大模型领域的趋势场景题深度解析
  • 网络原理 - 11(HTTP/HTTPS - 2 - 请求)
  • Shopify网上商店GraphQL Admin接口查询实战
  • idm 禁止自动更新提示(修改注册表)
  • Spring MVC中自定义日期类型格式转换器
  • 精益数据分析(32/126):电商指标优化与搜索策略解析
  • 【Python笔记 05】 if判断、比较运算符与逻辑运算符
  • Linux Ollama离线安装/更新教程-适用于国内快速下载Ollama最新版本(亲测好用)--适用于Qwen3 系列模型
  • 2025年- H12-Lc119-56.合并区间(普通数组)---java版
  • ROS2 学习
  • Uniapp:置顶
  • UDP数据报和TCP流套接字编程
  • 【网络原理】TCP异常处理(一):粘包问题
  • WSL2下Docker desktop的Cadvisor容器监控
  • 海思SD3403边缘计算AI核心设备概述
  • AI 边缘计算网关十大品牌
  • 高防CDN如何兼顾防护以及加速
  • 通用事件库IO多路复用技术选型与设计
  • MODSIM选型指南:汽车与航空航天企业如何选择仿真平台
  • 对 FormCalc 语言支持较好的 PDF 编辑软件综述
  • 基于蓝耘MaaS平台进行api调用创建本地智能ai
  • 【Web】如何解决 `npm run dev` 报错 `address already in use 127.0.0.1:9005` 的问题