算法訓練營day31 貪心算法⑤56. 合并區間、738.單調遞增的數字 、968.監控二叉樹

????????貪心算法的最后一篇博客!前面兩道題都是比較簡單的思路,重點理解一下最后一道題即可。有一說一,進入到貪心算法這一章節之后,我的博客里和代碼注釋里的內容明顯少了很多,因為很多貪心的題目我覺得不需要很復雜的文字說明,很多題解都是很容易理解的內容,可能更多是一種思路的積累吧

56. 合并區間

? ? ? ? 重疊問題,弄明白:1.如何判斷重疊 2.區間修改邏輯

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:result = []if len(intervals) == 0:return resultintervals.sort(key = lambda x: x[0])# 默認升序result.append(intervals[0])for i in range(1, len(intervals)):# 左閉右開if result[-1][1] >= intervals[i][0]: # 發現重疊result[-1][1] = max(result[-1][1], intervals[i][1])else:result.append(intervals[i])return result

738.單調遞增的數字

????????舉幾個簡單的例子:

  • 32->29
  • 3323->2999
  • 1253463->1249999

????????總結下來就是

  1. 找到“flag”(前一個小于cur,前-1,cur設為9,前一個為flag,遍歷查找flag)
  2. 將“flag”后面的數字全部設置為9
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:strNum = str(n) # 轉換為字符串flag = len(strNum)for i in range(len(strNum) -1, 0, -1):# 注意這里是0, 因為循環中會比較前一個位置上的元素if strNum[i - 1] > strNum[i]:flag = i# 切片為左閉右開strNum = strNum[:i - 1] + str(int(strNum[i - 1]) - 1) + strNum[i :]for i in range(flag, len(strNum)):strNum = strNum[:i] + '9' + strNum[i + 1:]return int(strNum) 

968.監控二叉樹

????????這道題目應該優先從葉子節點開始思考,要尊重后序遍歷,不要總是自頂(根節點)向下考慮

# 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
class Solution:# 從下往上安裝攝像頭:跳過leaves這樣安裝數量最少,局部最優 -> 全局最優# 先給leaves的父節點安裝,然后每隔兩層節點安裝一個攝像頭,直到Head# 0: 該節點未覆蓋# 1: 該節點有攝像頭# 2: 該節點有覆蓋def minCameraCover(self, root: Optional[TreeNode]) -> int:result = [0]# 注意使用列表不使用int的原因:python中的參數傳遞機制# 之前博客中講過,就不在贅述if self.traversal(root, result) == 0:# 這個地方可能想不到result[0] += 1return result[0]def traversal(self, cur:TreeNode, result: List[int]) -> int:if not cur:return 2 # none節點返回2, 才能正常在葉子節點的父節點安裝攝像頭left = self.traversal(cur.left, result)right = self. traversal(cur.right, result)# 情況1 # 左右節點都有覆蓋if left == 2 and right == 2:return 0# 情況2# left == 0 && right == 0 左右節點無覆蓋# left == 1 && right == 0 左節點有攝像頭,右節點無覆蓋# left == 0 && right == 1 左節點無覆蓋,右節點有攝像頭# left == 0 && right == 2 左節點無覆蓋,右節點覆蓋# left == 2 && right == 0 左節點覆蓋,右節點無覆蓋if left == 0 or right == 0:result[0] += 1return 1# 情況3if left == 1 or right == 1:return 2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916576.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916576.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916576.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins流水線部署+webhook2.0

文章目錄1. 環境2. 用到的插件3. 流水線部署腳本1. 環境 Centos7Jenkins2.5.0JDKopen17阿里云倉庫 注意:這個版本兼容需要特別注意,要不然會很麻煩 2. 用到的插件 Generic Webhook Trigger 3. 流水線部署腳本 兼容鉤子部署(webhook&…

IDM下載失敗排查

網絡連接問題排查檢查網絡連接是否穩定,確保能夠正常訪問互聯網 測試其他下載工具或瀏覽器是否能夠正常下載 嘗試關閉防火墻或殺毒軟件,排除安全軟件攔截的可能性代理和VPN設置檢查確認IDM的代理設置是否正確,是否與系統代理一致 檢查是否使用…

Anaconda安裝時的幾個操作

一、安裝Anaconda 其實Anaconda的安裝比較簡單,點擊next就好了。在安裝中需要注意以下兩點: 1、選擇安裝路徑 在安裝時,路徑最好選擇非C盤,且路徑中不要出現中文,以免后期運行代碼時出現不必要的錯誤。 我安裝時&…

網易易盾、騰訊ACE等主流10款游戲反外掛系統對比

本文將深入對比10款游戲反外掛系統:1.網易易盾;2.Ricochet Anti?Cheat;3.BattlEye;4.幾維安全手游智能反外掛系統;5.伏魔AI反外掛;6.Riot Vanguard;7.Xigncode3;8.盛大GPK&#xff…

wpa_supplicant-2.10交叉編譯

參考文章:https://blog.csdn.net/weixin_45783574/article/details/145810790 1、Openssl交叉編譯 1.1 下載openssl-1.1.1t.tar.gz 下載網址: https://openssl-library.org/source/old/1.1.1/index.html1.2 編譯 sudo tar xvf openssl-1.1.1t.tar.gz cd openssl-1.1

源碼解讀SpringCloudAlibaba Nacos2.x

Nacos 服務注冊 Nacos 服務注冊時,客戶端會將自己的信息注冊到Nicosserver上,形成key-value組合,其中key通常是服務名稱,value是實例地址信息。在二點X版本中,客戶端通過Spring Boot的擴展機制(例如web_initialized事件…

Windows 11 下 Anaconda 命令修復指南及常見問題解決

Windows 11 下 Anaconda 命令修復指南及常見問題解決 在使用 Anaconda 過程中,可能會遇到環境損壞、更新失敗、包依賴沖突等問題。本文整理了一套通過命令行修復 Anaconda 的完整方案,適用于 Windows 11 系統,同時補充了權威參考鏈接供深入學…

安寶特案例丨全球連線!安寶特Vuzix與RodsCones共筑實時手術教育平臺

安寶特Vuzix與合作伙伴Rods&Cones協作,為Rocamed在布拉格UROSANIT診所舉辦的創新型實時手術直播研討會提供技術賦能。 本次直播通過合作伙伴Rods&Cones軟件平臺搭載安寶特Vuzix智能眼鏡,成功連接來自9國、3大洲、6個時區的27位醫生,…

【Spring Boot 快速開發】一、入門

目錄Spring Boot 簡介Web 入門Spring Boot 快速入門HTTP 協議概述請求協議響應協議解析協議TomcatSpring Boot 簡介 Spring Boot 是由 Pivotal 團隊(后被 VMware 收購)開發的基于 Spring 框架的開源項目,于 2014 年首次發布。其核心目標是簡…

laravel chunkById導出數據亂序問題

2025年7月28日17:47:29 這幾天在做數據導出優化,使用xlswriter作為導出組件,但是發現在 使用 $base->chunkById(2000, function ($list) use ($writer, $sheet1) { 發現導出的數據是亂的,偶爾有些重復,偶爾有些少了&#xff0c…

Spring IOC與DI

spring的兩大思想:IOC與AOP一、ioc的概念什么叫控制翻轉?之前:對象的使用方,創建對象,對象的控制權,在對象的使用方手中.spring:對象的控制權交給了spring.舉個例子:智能駕駛,之前車的使用權在人手中,而現在在ai手中,這就是控制反轉.什么叫ioc:之前車企生產車需要做整個車,費事…

【圖像處理基石】Segment Anything Model (SAM) 調研

Segment Anything Model (SAM) 是由 Meta AI 開發的革命性圖像分割模型,它能夠對圖像中的任何物體進行分割,無需針對特定類別進行訓練。SAM 具有以下特點: 通用性:可以分割任何視覺對象,無論是否見過該類別 靈活性:支持多種輸入提示(點、框、掩碼或文本) 實時性:在普通…

unisS5800XP-G交換機配置命令之端口篇

一、批量配置端口(1) 進入系統視圖。system-view(2) 指定接口范圍&#xff0c;并進入接口批量配置視圖。¡ 指定一個不帶別名的接口列表。interface range { interface-type interface-number [ to interface-type interface-number ] } &<1-24>¡…

MySQL中的 redolog

什么是redo log如果我們只在內存的 Bufer Pool中修改了頁面&#xff0c;假設在事務提交后突然發生了某個故障導致內存中的數據都失效了&#xff0c;那么這個已經提交的事務在數據庫中所做的更改也就跟著丟失了&#xff0c;這是我們所不能忍受的。那么&#xff0c;如何保證這個持…

數據結構之 【排序】(非遞歸實現快速排序)

目錄 1.引入 2.非遞歸實現快排的思想 3.非遞歸實現快排圖解 4.完整代碼 1.引入 遞歸不可避免的話題就是防止棧溢出 所以程序員需要具備遞歸改非遞歸的能力 &#xff0c;一般來說&#xff0c;抓住遞歸中變化的量是關鍵 void QuickSort(int* a, int left, int right){if (left…

CLAP文本-音頻基礎模型: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISION

一、TL&#xff1b;DR 現在的做法有什么問題&#xff1f;主流范式是 “一個類別標簽對應多個錄音”&#xff0c;需要提前標注預測預先定義的類別&#xff0c;只能做閉集理解&#xff0c;失去靈活性 我們怎么做&#xff1f;通過兩個編碼器和對比學習機制建立語言與音頻的關聯&a…

Flink2.0學習筆記:Stream API 常用轉換算子

EC0720/FLINKTASK-TEST-STREAM/demo at master stevensu1/EC0720 先看測試效果&#xff1a;控制臺 測試效果&#xff1a;監控服務端 主要的轉換算子包括&#xff1a; 轉換算子 filter:過濾包含“Flink”的輸入 轉換算子 map: 將每行數據前添加“Processed: ”并轉為大寫 轉…

一、Python環境、Jupyter與Pycharm

安裝Python由于RAG項目中所需要的Python版本必須高于3.8&#xff0c;經過篩選&#xff0c;最終選擇了3.10.11這個版本py --version Python 3.10.11安裝過程略過&#xff0c;但對于幾個基礎的命令作個筆記記錄where python找到python啟動器的位置D:\>where python C:\Users\x…

Flink CEP 動態模板與規則動態修改實踐完全手冊

1. Flink CEP:從靜態規則到動態江湖 Flink 的復雜事件處理(CEP)庫就像一個武功高強的俠客,能從數據流中精準捕獲特定模式,堪稱流處理界的“降龍十八掌”。但問題來了:傳統 CEP 規則通常是寫死在代碼里的,就像刻在石碑上的武功秘籍,改起來費勁不說,還得重啟應用,簡直…

vue3.2 + echarts5.6 + ant-design-vue 3.x 實現自定義 echarts 圖例

文章目錄概要技術細節效果概要 需求需要實現圖例移入顯示描述說明 故實現自定義圖例 技術細節 <template><div class"custom-legend"><divv-for"item in legends":key"item.name"class"legend-item":class"{ i…