代碼隨想錄算法訓練營Day30

力扣452.用最少數量的箭引爆氣球【medium】
力扣435.無重疊區間【medium】
力扣763.劃分字母區間【medium】
力扣56.合并區間【medium】

一、力扣452.用最少數量的箭引爆氣球【medium】

題目鏈接:力扣452.用最少數量的箭引爆氣球
在這里插入圖片描述
視頻鏈接:代碼隨想錄
題解鏈接:靈茶山艾府

1、思路

  • 在這里插入圖片描述
  • 對區間的右端點進行升序排序
  • 初始化 ans = 0, pre = -inf
  • 如果 start <= pre:說明這個區間已經有箭,跳過
  • 如果 start > pre:說明沒有被覆蓋住,更新 pre = endans += 1
  • 時間復雜度: O ( n l o g n ) O(nlogn) O(nlogn)

2、代碼

class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:points.sort(key= lambda x:x[1])ans = 0pre = -inffor start,end in points:if start > pre:ans += 1pre = endreturn ans

二、力扣435.無重疊區間【medium】

題目鏈接:力扣435.無重疊區間
在這里插入圖片描述

視頻鏈接:代碼隨想錄
題解鏈接:靈茶山艾府

1、思路

  • 求移除最少區間使得剩下的區間之間互不重疊 等價于 選出最多區間使得這些區間互不重疊
  • 怎樣才可以多呢?我們選出右端點最小的作為第一個區間A,這樣相當于為后面預留出更多的位置存放區間,這就是貪心的地方
  • 選出第一個后,我們也劃去了和A有相交部分的區間,從剩下的區間中再選出最小的右端點
  • 所以我們的步驟是
    • 將區間的右端點升序排序
    • 初始化 ans = 0, pre_r = -inf
    • 當碰到區間的左端點 >= 上一個區間的右端點的時候,說明碰到了第一個不相交的了,這就是我們下一個要選的區間, ans += 1 , pre_r = right ,更新區間數ans和右端點的位置
    • 最后的答案用區間長度減一下
  • 時間復雜度: O ( n l o g n ) O(nlogn) O(nlogn)

2、代碼

class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:intervals.sort(key = lambda x: x[1])ans = 0pre_r = -inffor left, right in intervals:if left >= pre_r:ans += 1pre_r = rightreturn len(intervals) - ans

三、力扣763.劃分字母區間【medium】

題目鏈接:力扣763.劃分字母區間
在這里插入圖片描述
視頻鏈接:代碼隨想錄
題解鏈接:靈茶山艾府

1、思路

  • 利用字典鍵的唯一性,確保最終每個字符對應的下標是最后一次出現的位置
  • 初始化答案 ans = [ ], start = end = 0
  • 記錄第一個字母在字符串中最后一次出現的位置更新為end
  • 通過for循環遍歷,不斷延拓更新end【通過比較當前的endlast(c)】,直到 end == i,說明可以切割了,這就是最早可以切割的地方,即貪心的地方
  • 那么 i + 1 就是新的start
  • 同時記錄下剛剛切割的片段長度
  • 時間復雜度: O ( 2 n ) O(2n) O(2n)

2、代碼

class Solution:def partitionLabels(self, s: str) -> List[int]:last = {c: i for i,c in enumerate(s)} # 每個字母最后出現的下標ans = []start = end = 0for i,c in enumerate(s):end = max(end, last[c]) # 更新當前區間右端點的最大值if end == i: # 當前區間合并完畢ans.append(end - start + 1)start = i + 1  # 下一個區間的左端點return ans

3、代碼問題

  • {key_expression: value_expression for item in iterable}
  • 在這里插入圖片描述

四、力扣56.合并區間【medium】

題目鏈接:力扣56.合并區間
在這里插入圖片描述
題解鏈接:靈茶山艾府

1、思路

  • 對區間左端點進行升序排序
  • 初始化答案 ans = [ ]
  • 判斷什么時候可以合并?
  • 當遍歷區間的左端點在處理區間的右端點左端,即有相交,即可以合并
    • 合并后還要更新新的右區間
    • 怎么表示這個處理區間的右端點呢?即ans[-1][1]!這個表示太巧妙了!我本來是想引進兩個新的變量表示
  • 否則,不可以合并,將其作為新的處理區間
    • 即添加到答案中
  • 時間復雜度: O ( n l o g n ) O(nlogn) O(nlogn)

2、代碼

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key = lambda x:x[0])ans = []for p in intervals:if ans and p[0] <= ans[-1][1]: # 可以合并ans[-1][1] = max(ans[-1][1], p[1]) # 更新右端點最大值else: # 不相交,無法合并ans.append(p) # 新的合并區間return ans

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

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

相關文章

Swift —— delegate 設計模式

一、什么是 delegate 模式 所謂 delegate 就是代理模式。簡單來說&#xff0c;delegate 模式就是在類的函數里運行完一段代碼后&#xff0c;你可以通過一個符合某個代理協議的屬性來調代理的方法。其中&#xff0c;代理方法就是回調函數。 二、delegate 模式與閉包比的優勢 …

linux-vi和文件操作

在 Linux 系統的世界里&#xff0c;有一個核心思想貫穿始終&#xff0c;那就是 “萬物都是文件”。這一理念極大地簡化了系統資源的管理和操作&#xff0c;為用戶和開發者提供了統一且高效的交互方式。本文將深入探討這一理念在 Linux 文件系統中的具體體現&#xff0c;從硬盤分…

Endnote 21顯示字段設置與修改詳細解析(附Endnote Click)

目錄 前言字段設置與詳細解釋Endnote Click1. 安裝 Endnote Click2. 一鍵獲取Edge插件3. 安裝完成啟動插件4. 檢索期刊文獻案例5. 在 Endnote Click 我的locker中導入文獻 前言 在學術研究的漫漫征途中&#xff0c;高效管理參考文獻是每位學者、學生都繞不開的關鍵環節。Endno…

java使用 ?Stream 流對自定義對象數組去重的

在 Java 中&#xff0c;使用 Stream 流對自定義對象數組去重的核心是確保對象能正確判斷“重復”的邏輯。以下是具體實現方法及場景分析&#xff1a; 方法 1&#xff1a;直接使用 distinct()&#xff08;需重寫 equals 和 hashCode&#xff09; 若自定義對象已正確重寫 equals…

C++ (類的設計,對象的創建,this指針,構造函數)

類的設計 C對結構體是有增強的 可以包含函數作為結構體成員 可以直接定義變量 在結構體成員函數里面可以直接訪問結構體成員變量 struct student{string name;int age;float score;void play_game(const string &name);}void student::play_game(const string game){}…

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS》全文閱讀

《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS: THE IMPACT OF PROBLEM-SOLVING DATA, DATA SYNTHESIS METHODS, AND TRAINING STAGES》全文閱讀 提升語言模型中的數學推理能力&#xff1a;問題求解數據、數據合成方法及訓練階段的影響 \begin{abstract} 數學推…

網絡測試工具:涵蓋網絡測速、密碼查看、故障判斷與網絡監測

在網絡管理與維護的廣闊領域中&#xff0c;網絡測試工具扮演著至關重要的角色。它們不僅簡化了復雜的網絡診斷流程&#xff0c;還提升了工作效率。今天推薦一款包含功能全面的網絡測試工具&#xff1a;InetTest&#xff0c;是一款免費且開源的網絡測試工具&#xff0c;適用于Wi…

小剛說C語言刷題——1005 - 已知一個圓的半徑,求解該圓的面積和周長

1.題目描述 已知一個圓的半徑&#xff0c;求解該圓的面積和周長。 輸入 輸入只有一行&#xff0c;只有 1個整數。 輸出 輸出只有兩行&#xff0c;一行面積&#xff0c;一行周長。&#xff08;保留兩位小數&#xff09;。 令 pi3.1415926。 樣例 輸入 1 輸出 3.14 6.…

【算法】快速排序

算法系列六&#xff1a;快速排序 一、快速排序的遞歸探尋 1.思路 2.書寫 3.搭建 3.1設計過掉不符情況&#xff08;在最底層時&#xff09; 3.2查驗能實現基礎結果&#xff08;在最底層往上點時&#xff09; 3.3跳轉結果繼續往上回搭 4.實質 二、快速排序里的基準排序 …

SoapUI 4.6.4(32位)下載安裝教程 - 兼容老舊Windows系統

SoapUI 4.6.4&#xff08;32位版&#xff09; 是個老版本的測試工具&#xff0c;專門給 32位 Windows 電腦 用的。現在最新版都是 64 位的了&#xff0c;但如果你還在用老系統&#xff0c;可能還得找這個舊版。 SoapUI 4.6.4工具下載:https://pan.quark.cn/s/c07381db8102 這…

【AI量化第24篇】KhQuant 策略框架深度解析:讓策略開發回歸本質——基于miniQMT的量化交易回測系統開發實記

我是Mr.看海&#xff0c;我在嘗試用信號處理的知識積累和思考方式做量化交易&#xff0c;應用深度學習和AI實現股票自動交易&#xff0c;目的是實現財務自由~ 目前我正在開發基于miniQMT的量化交易系統——看海量化交易系統。 本篇要講到量化的核心了——策略。說白了每個投資者…

Java面試黃金寶典48

1. C++ 的拷貝構造函數,深拷貝和淺拷貝 定義 拷貝構造函數:在 C++ 里,拷貝構造函數屬于特殊的構造函數,其功能是使用一個已存在的對象來初始化一個新對象。當對象以值傳遞的方式作為參數傳給函數、函數返回對象、用一個對象初始化另一個對象時,拷貝構造函數會被調用。淺拷…

OpenCV學習之獲取圖像所有點的坐標位置(二)

1.功能介紹 (1)使用openCV解析了.jpeg、.jpg、.png格式的圖像文件,輸出了圖像的寬、高、通道數; (2)創建txt格式文件,保存圖像中各像素點的rgba值。 2.環境介紹 操作系統:window10 開發語言:visual studio 2015 c++ 3.功能實現過程 3.1環境設置 (1)打開Vs2015…

B2B2C多用戶商城平臺 的兩種創新玩法

以前隨便搞個淘寶京東那樣的商城就能躺著賺錢的日子早過去了&#xff01;現在市面上各種電商玩法花樣百出&#xff1a;小紅書那種刷著刷著就下單的"種草"電商&#xff0c;拼多多那種"幫我砍一刀"的社交電商&#xff0c;還有抖音快手那種看著視頻突然就想買…

【Bluedroid】A2DP Sink播放流程源碼分析(二)

接上一篇繼續分析&#xff1a;【Bluedroid】A2DP Sink播放流程源碼分析(一)_安卓a2dp sink播放流程-CSDN博客 AVDTP接收端&#xff08;Sink&#xff09;流事件處理 bta_av_sink_data_cback 是 Bluedroid 中 A2DP Sink 角色的 AVDTP 數據回調函數&#xff0c;負責處理接收端的…

抗量子算法驗證工具

抗量子算法計算工具 抗量子算法驗證工具ML-KEMML-DSASLH-DSA 抗量子算法驗證工具 2024年末&#xff0c;美國NIST陸續公布了FIPS-203、FIPS-204、FIPS-205算法標準文檔&#xff0c;抽空學習了一下&#xff0c;做了個算法計算工具。 ML-KEM ML-DSA SLH-DSA 需要的朋友可留言交流…

2025年PMP考試有哪些變化?難點在哪里?

PMP&#xff08;項目管理專業人士資格認證&#xff09;考試因其廣泛的行業認可度和實用性&#xff0c;成為許多專業人士提升職業競爭力的重要選擇。然而&#xff0c;對于初次接觸PMP考試的考生來說&#xff0c;其廣度與深度的平衡、理論與實踐的結合&#xff0c;以及跨文化思維…

Docker學習筆記-docker安裝、刪除

一、在centOS 7中docker的默認安裝目錄 # Docker 主配置文件目錄 ls /etc/docker# Docker 數據目錄&#xff08;鏡像、容器、卷等&#xff09; ls /var/lib/docker# Docker 可執行文件路徑 which docker # 輸出類似 /usr/bin/docker 二、docker文件目錄說明 目錄/文件用途/…

MATLAB求和∑怎么用?

MATLAB求和∑怎么用&#xff1f; 一&#xff1a;題目&#xff1a;求下列方程的和 二、代碼如下 1.syms函數 &#xff08;方法一) 代碼如下&#xff08;示例&#xff09;&#xff1a; 1. syms x 2. symsum((x.^22*x).^3,1,100) 3. 2.直接用循環 (方法二) 代碼如下&am…

每日算法-鏈表(2.兩數相加、24.兩兩交換鏈表中的節點、143.重排鏈表)

一.兩數相加 1.1題目描述 1.2題解思路 定義兩個指針l1,l2依次遍歷兩個鏈表&#xff0c;用變量add存儲l1加l2的值&#xff0c;將add的個位數取出來充當新節點的值&#xff0c;然后將add的個位數刪去&#xff0c;即add /10&#xff0c;循環此操作。 重點分析&#xff1a; 1.跟…