代碼隨想錄day31 貪心part05

56.合并區間

以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] = [starti, endi] 。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。

示例 1:

輸入:intervals = [[1,3],[2,6],[8,10],[15,18]]
輸出:[[1,6],[8,10],[15,18]]
解釋:區間 [1,3] 和 [2,6] 重疊, 將它們合并為 [1,6].
示例 2:

輸入:intervals = [[1,4],[4,5]]
輸出:[[1,5]]
解釋:區間 [1,4] 和 [4,5] 可被視為重疊區間。

思路

首先還是按照左邊界排序。接下來合并區間。
直接在res里合并。

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, new Comparator<int[]>() {@Overridepublic int compare(int[] a, int[] b) {return a[0] - b[0];}});List<int[]> res = new ArrayList<>();res.add(intervals[0]);for (int i = 1; i < intervals.length; i++) {if (res.get(res.size() - 1)[1] >= intervals[i][0]) {res.get(res.size() - 1)[1] = Math.max(res.get(res.size() - 1)[1], intervals[i][1]);} else {res.add(intervals[i]);}}return res.toArray(new int[res.size()][]);}
}

738.單調遞增的數字

當且僅當每個相鄰位數上的數字 x 和 y 滿足 x <= y 時,我們稱這個整數是單調遞增的。

給定一個整數 n ,返回 小于或等于 n 的最大數字,且數字呈 單調遞增 。

示例 1:

輸入: n = 10
輸出: 9
示例 2:

輸入: n = 1234
輸出: 1234
示例 3:

輸入: n = 332
輸出: 299

思路

一旦出現s[i-1]大于s[i],非單調遞增,首先要讓s[i-1]–,比如332,3變成2。
從后向前遍歷,332->329->299,獲得了最前面的-1的位置,然后后面都是9即可。

class Solution {public int monotoneIncreasingDigits(int n) {char[] s = String.valueOf(n).toCharArray();int flag = s.length;for (int i = s.length - 1; i > 0; i--) {if (s[i - 1] > s[i]) {flag = i;s[i - 1]--;}}for (int i = flag; i < s.length; i++) {s[i] = '9';}return Integer.parseInt(new String(s));}
}

968.監控二叉樹

給定一個二叉樹,我們在樹的節點上安裝攝像頭。

節點上的每個攝影頭都可以監視其父對象、自身及其直接子對象。

計算監控樹的所有節點所需的最小攝像頭數量。
在這里插入圖片描述

思路

首先發現攝像頭都沒有放到葉節點上。
局部最優:葉節點的父節點安攝像頭
整體最優:全部攝像頭數量最少
所以從下向上,先給葉節點的父節點放攝像頭,然后隔兩個節點放一個攝像頭。
遍歷順序:左右中,從下向上,后序遍歷
定義每個節點的狀態:

  • 節點無覆蓋:0
  • 節點有攝像頭:1
  • 節點有覆蓋:2
    空節點表示有覆蓋,這樣就可以不在葉節點放攝像頭了。
class Solution {int result;public int minCameraCover(TreeNode root) {result = 0;if (traversal(root) == 0) {// 頭節點無覆蓋,安裝攝像頭result++;}return result;}int traversal(TreeNode root) {// 空節點有覆蓋,返回2if (root == null) {return 2;}int left = traversal(root.left);int right = traversal(root.right);// 左右節點都有覆蓋,此時該節點無覆蓋if (left == 2 && right == 2) {return 0;}// 左右節點至少有一個無覆蓋,中間節點該放置攝像頭if (left == 0 || right == 0) {result++;return 1;}// 左節點或右節點是攝像頭,該節點有覆蓋if (left == 1 || right == 1) {return 2;}return -1;}
}

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

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

相關文章

《C++11:通過thread類編寫C++多線程程序》

關于多線程的概念與理解&#xff0c;可以先了解Linux下的底層線程。當對底層線程有了一定程度理解以后&#xff0c;再學習語言級別的多線程編程就輕而易舉了。 【Linux】多線程 -&#xff1e; 從線程概念到線程控制 【Linux】多線程 -&#xff1e; 線程互斥與死鎖 語言級別的…

c++位運算總結

在C中&#xff0c;位運算是對二進制位進行操作的運算&#xff0c;主要有以下幾種&#xff1a; 1. 按位與&#xff08; & &#xff09;&#xff1a;兩個操作數對應位都為1時&#xff0c;結果位才為1&#xff0c;否則為0。例如 3 & 5 &#xff0c; 3 二進制是 0000 0011…

1.1 計算機網絡的概念

首先來看什么是計算機網絡&#xff0c;關于計算機網絡的定義并沒有一個統一的標準&#xff0c;不同的教材有 不同的說法&#xff08;這是王道書對于計算機網絡的定義&#xff09;&#xff0c;我們可以結合自己的生活經驗去體會這個 定義。 可以用不同類型的設備去連接計算機網絡…

用LLama factory時報類似Process 2504721 got signal: 1的解決方法

之前用nohup來遠程跑LLama factory微調腳本&#xff0c;是沒有問題的&#xff0c;但今天發現運行類似下面這個命令時&#xff0c; nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一關閉ssh session&#xff0c;就會終止訓練&#xff0c;報類似&…

python常用內置時間函數+藍橋杯時間真題

1.time 1.1 time.time() 時間戳指&#xff1a;1970年1月1日開始到現在所經過的秒數 import time print(time.time()) # 輸出可得1970年1月1日開始到執行此代碼所經過的秒數 1.2 time.localtime() 返回一個當前時間的時間對象&#xff0c;具體信息&#xff0c;并且可以單獨…

一個用 C 語言打印出所有三位數水仙花數的程序

水仙花數&#xff08;Narcissistic number&#xff09;是指一個三位數&#xff0c;其各位數字的立方和等于該數本身。例如&#xff1a;153 是一個水仙花數&#xff0c;因為 (1^3 5^3 3^3 153)。 以下是一個用 C 語言打印出所有三位數水仙花數的程序&#xff1a; 代碼實現 …

利用 VSCode 配置提升 vibe coding 開發效率

利用 VSCode 配置提升 vibe coding 開發效率 Vibe Coding&#xff08;氛圍編程&#xff09;是一種基于AI的編程方法&#xff0c;其核心在于通過自然語言描述軟件需求&#xff0c;再由大規模語言模型&#xff08;LLM&#xff09;自動生成代碼&#xff0c;從而實現對傳統手寫編程…

練習題:110

目錄 Python題目 題目 題目分析 需求理解 關鍵知識點 實現思路分析 代碼實現 代碼解釋 函數定義&#xff1a; 計算值的總和&#xff1a; 測試函數&#xff1a; 運行思路 結束語 Python題目 題目 定義一個函數&#xff0c;接受一個字典作為參數&#xff0c;返回字…

處理 Linux 信號:進程控制與異常管理的核心

個人主頁&#xff1a;chian-ocean 文章專欄-Linux 前言&#xff1a; 在 Linux 操作系統中&#xff0c;信號是用于進程間通信的一種機制&#xff0c;能夠向進程發送通知&#xff0c;指示某些事件的發生。信號通常由操作系統內核、硬件中斷或其他進程發送。接收和處理信號是 Li…

通信協議之串口

文章目錄 簡介電平標準串口參數及時序USART與UART過程引腳配置 簡介 點對點&#xff0c;只能兩設備通信只需單向的數據傳輸時&#xff0c;可以只接一根通信線當電平標準不一致時&#xff0c;需要加電平轉換芯片&#xff08;一般從控制器出來的是信號是TTL電平&#xff09;地位…

Unity編輯器功能及拓展(1) —特殊的Editor文件夾

Unity中的Editor文件夾是一個具有特殊用途的目錄&#xff0c;主要用于存放與編輯器擴展功能相關的腳本和資源。 一.糾纏不清的UnityEditor 我們Unity中進行游戲構建時&#xff0c;我們經常遇到關于UnityEditor相關命名空間丟失的報錯&#xff0c;這時候&#xff0c;只得將報錯…

工具類-csv文件導入數據庫思路

首先&#xff0c;讓我們來看下數據庫建表語句&#xff1a; CREATE TABLE behavior_reports (id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT 報告ID,report_type VARCHAR(50) NOT NULL COMMENT 報告類型(daily, weekly, monthly),start_date DATE NOT NULL COMMENT 開始日期,e…

軟件工程之軟件開發模型(瀑布、迭代、敏捷、DevOps)

1. 瀑布模型&#xff08;Waterfall Model&#xff09; 定義與流程 瀑布模型是線性順序的開發流程&#xff0c;包含需求分析、設計、編碼、測試、維護等階段&#xff0c;每個階段完成后才能進入下一階段&#xff0c;類似“瀑布流水”逐級推進。 核心特點 嚴格階段劃分&#…

FreeRTOS與RT-Thread內存分配對比分析

一、動態內存分配策略 ?FreeRTOS ?分配算法多樣性&#xff1a;提供5種動態內存管理算法&#xff08;heap_1至heap_5&#xff09;&#xff0c;覆蓋從簡單到復雜的場景。例如&#xff1a; heap_1&#xff1a;僅支持分配不支持釋放&#xff0c;適用于固定任務棧分配。heap_4&…

202519 | Mybatis-Plus

快速入門 MyBatis-Plus&#xff08;簡稱 MP&#xff09;是 MyBatis 的增強工具&#xff0c;它在 MyBatis 的基礎上只做增強不做改變&#xff0c;簡化了開發&#xff0c;提高了效率。以下是 MyBatis-Plus 的快速入門指南&#xff0c;幫助您快速上手使用。 1. 環境準備 JDK&…

Linux C語言調用第三方庫,第三方庫如何編譯安裝

在 Linux 環境下使用 C 語言調用第三方庫時&#xff0c;通常需要先對第三方庫進行編譯和安裝。以下為你詳細介紹一般的編譯安裝步驟&#xff0c;并給出不同類型第三方庫&#xff08;如使用 Makefile、CMake 構建系統&#xff09;的具體示例。 一般步驟 1. 獲取第三方庫源碼 …

linux基本命令(1)--linux下的打包命令 -- tar 和gzip

tar 解壓 &#xff0c;打包 語法&#xff1a;tar [主選項輔選項] 文件或者目錄 使用該命令時&#xff0c;主選項是必須要有的&#xff0c;它告訴tar要做什么事情&#xff0c;輔選項是輔助使用的&#xff0c;可以選用。 主選項&#xff1a; c 創建新的檔案文件。如果用戶想備…

Python 序列構成的數組(對序列使用+和_)

對序列使用和* Python 程序員會默認序列是支持 和 * 操作的。通常 號兩側的序列由 相同類型的數據所構成&#xff0c;在拼接的過程中&#xff0c;兩個被操作的序列都不會被 修改&#xff0c;Python 會新建一個包含同樣類型數據的序列來作為拼接的結果。 如果想要把一個序列…

[ C語言 ] | 從0到1?

目錄 認識計算機語言 C語言 工欲善其事必先利其器 第一個C語言代碼 這一些列 [ C語言 ] &#xff0c;就來分享一下 C語言 相關的知識點~ 認識計算機語言 我們說到計算機語言&#xff0c;語言&#xff0c;就是用來溝通的工具&#xff0c;計算機語言呢&#xff1f;就是我們…

【通道注意力機制】【SENet】Squeeze-and-Excitation Networks

0.論文摘要 卷積神經網絡建立在卷積操作的基礎上&#xff0c;通過融合局部感受野內的空間和通道信息來提取有意義的特征。為了增強網絡的表示能力&#xff0c;最近的一些方法展示了增強空間編碼的好處。在本研究中&#xff0c;我們專注于通道關系&#xff0c;并提出了一種新穎…