代碼隨想錄算法訓練營第三十六天|435. 無重疊區間, 763.劃分字母區間, 56. 合并區間

435. 無重疊區間

- LeetCode

思路: 本題是一個去除重疊區間的問題, 首先按照區間的 end_point 排序, 從第二個區間開始, 如果第二個區間和第一個區間有交集, 就要移除第二個區間。 因為容易證明之后的區間區間如果和第一個有交集, 必然和第二個有交集, 反之不成立。 如果第一個區間和第二個沒有交集, end_point 更新到第二個區間的右端, 繼續循環。

難點: 兩個區間不相交的時候記得移動右端點

class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:intervals.sort(key=lambda x: x[1])ep = intervals[0][1]removes = 0for i in range(1,len(intervals)):if intervals[i][0] < ep:removes += 1ep = min(ep, intervals[i][1])else:ep = intervals[i][1]return removes 

763.劃分字母區間

- LeetCode

思路:這個問題雖然包了層string 的皮, 但還是區間相交的問題。 首先循環字符串, 對于字符串中的字符記下它存在的區間, 區間的左端點是第一次出現的位置, 右端點是最后一次出現的位置。 例如 "ababcbacadefegdehijhklij" a 的區間就是 [0, 8]. 接下來要做的就是合并區間,先根據開頭位置排序(其實第一步已經排好了),然后從第二個開始循環所有區間,如果和上一個區間有交集, 合并的區間右端點更新到兩個右端的最大值。 如果沒有交易, 上個區間的 end_point - start_point + 1 就是一段分割后的字符串長度。?

難點: 把string 問題翻譯成區間交集問題。

class Solution:def partitionLabels(self, s: str) -> List[int]:interval_dict = defaultdict(lambda: [0, 0])occurences = set()for i, letter in enumerate(s):if letter in occurences:interval_dict[letter][1] = ielse:occurences.add(letter)interval_dict[letter][0] = i                interval_dict[letter][1] = i intervals = list(interval_dict.values())# print(intervals)ans = []cur_sp, cur_ep = intervals[0][0], intervals[0][1]for i in range(1, len(intervals)):if intervals[i][0] < cur_ep:cur_ep = max(cur_ep, intervals[i][1])else:ans.append(cur_ep - cur_sp + 1)cur_sp, cur_ep = intervals[i][0], intervals[i][1]ans.append(cur_ep - cur_sp + 1)return ans 

56. 合并區間?

- LeetCode

思路: 這不是上一個問題一摸一樣嘛。。。?

難點: 無

class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key = lambda x: x[0])cur_sp, cur_ep = intervals[0][0], intervals[0][1]ans = []for i in range(1, len(intervals)):if intervals[i][0] <= cur_ep:cur_ep = max(cur_ep, intervals[i][1])else:ans.append([cur_sp, cur_ep])cur_sp, cur_ep = intervals[i][0], intervals[i][1]ans.append([cur_sp, cur_ep])return ans

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

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

相關文章

做測試還是測試開發,選職業要慎重!

【軟件測試面試突擊班】2024吃透軟件測試面試最全八股文攻略教程&#xff0c;一周學完讓你面試通過率提高90%&#xff01;&#xff08;自動化測試&#xff09; 突然發現好像挺多人想投測開和測試的&#xff0c;很多人面試的時候也會被問到這幾個職位的區別&#xff0c;然后有測…

每日五道java面試題之mysql數據庫篇(三)

目錄&#xff1a; 第一題. 百萬級別或以上的數據如何刪除&#xff1f;第二題. 前綴索引第三題. 什么是最左前綴原則&#xff1f;什么是最左匹配原則?第四題. B樹和B樹的區別第五題. 使用B樹和B樹好處 第一題. 百萬級別或以上的數據如何刪除&#xff1f; 關于索引&#xff1a;…

【設計】設計一個web版的數據庫管理平臺后端精要

需求 springboot設計開發一個系統&#xff0c;在這個系統的數據庫表中存放著2000個數據庫實例&#xff0c;有MySQL、Oracle、sql server3種數據庫類型&#xff0c;用戶可以在頁面上選擇不同的實例&#xff0c;連接這些實例上的數據庫&#xff0c;來執行業務sql 實現 Service…

光伏儲能MPPT控制系統如何進行浪涌靜電保護?

MPPT&#xff08;Maximum Power Point Tracking&#xff09;是太陽能電池板光伏發電系統中重要的一種控制技術。MPPT控制器能夠實時偵測太陽能板的發電電壓&#xff0c;并追蹤最高電壓電流值&#xff08;VI&#xff09;&#xff0c;使系統以最大功率輸出對蓄電池充電&#xff0…

06 - ip route和route -n的區別

1 ip route和route -n的區別 ip route 和 route -n 都是用于查看和管理Linux系統路由表的命令。但下面是它們的區別&#xff1a; ip route&#xff1a;是Linux系統中的現代工具&#xff0c;它屬于iproute2套件&#xff1b;它提供了更多的選項&#xff0c;可以更精確地控制路由表…

使用git的小筆記

平時工作中使用git存儲項目代碼&#xff0c; 常用的命令 拉取倉庫代碼 git clone http://100.100.100.100:9080/my_test/test.git 拉取到以后&#xff0c; 先切換到自己的分支 git checkout my_name 一頓魔改代碼 然后 add 新增的文件或者修改的文件 git add * 然后提交 并寫…

【go從入門到精通】什么是go?為什么要選擇go?

go的出生&#xff1a; go語言&#xff08;或Golang&#xff09;是Google開發的開源編程語言&#xff0c;誕生于2006年1月2日下午15點4分5秒&#xff0c;于2009年11月開源&#xff0c;2012年發布go穩定版。Go語言在多核并發上擁有原生的設計優勢&#xff0c;Go語言從底層原生支持…

攔截大語言模型API調用 無需深究文檔源碼

背景眾多庫致力于通過自動重構或創建提示符來優化大語言模型的輸出。這些建庫宣稱能夠使大語言模型的輸出更加&#xff1a; 安全(例如&#xff1a;安全護欄) 可預測(例如&#xff1a;智能指導) 結構化(例如&#xff1a;指令生成器) 魯棒(例如&#xff1a;語言鏈) … 或者針…

如何在 Windows 上安裝 ONLYOFFICE 文檔 8.0

使用社區版&#xff0c;您可以在本地服務器上安裝 ONLYOFFICE 文檔&#xff0c;并將在線編輯器與 ONLYOFFICE 協作平臺或其他熱門系統集成在一起。 ONLYOFFICE 文檔是什么 ONLYOFFICE 文檔是一個功能強大的文檔編輯器&#xff0c;支持處理文本文檔、電子表格、演示文稿、可填寫…

FPGA時序約束與分析--數據到達路徑和數據需求路徑

文章目錄 前言一、定義二、時序模型三、公式推導前言 時序約束的定義–設計者根據實際的系統功能,通過時序約束的方式提出時序要求; FPGA 編譯工具根據設計者的時序要求,進行布局布線;編譯完成后, FPGA 編譯工具還需要針對布局布線的結果,套用特定的時序模型( FPGA 器件…

Andorid 13 修改默認音量區間、默認音量值

Andorid 13 默認音量區間是 [0,15] &#xff0c;默認音量 5。 需求是&#xff1a;音量區間為 [0,100] &#xff0c;默認音量 30 。 找到對應產品的 device.mk &#xff0c;添加如下 #default volume PRODUCT_PROPERTY_OVERRIDES \ro.config.media_vol_steps100 \ro.config.…

無人機遙感在農林信息提取中的實現方法與GIS融合應用

在新一輪互聯網信息技術大發展的現今&#xff0c;無人機、大數據、人工智能、物聯網等新興技術在各行各業都處于大爆發的前夜。為了將人工智能方法引入農業生產領域。首先在種植、養護等生產作業環節&#xff0c;逐步擺脫人力依賴&#xff1b;在施肥灌溉環節構建智慧節能系統&a…

openlayers 路線規劃 高德坐標轉wgs84 wgs84轉天地圖

在https://blog.csdn.net/qq_36287830/article/details/136321365改善而來的 需要進行坐標轉換 不轉換你畫的線和實際數據是無法一一對應的 會出現偏移 關鍵代碼 模擬請求后獲取到數據場景 fetch(./a.json).then(async (res) > {//等待數據格式化為Jsonlet json await res.…

【C++第三課 - 類和對象中】構造函數、析構函數、拷貝構造函數

目錄 類的6個默認成員函數構造函數自己寫的構造函數默認生成的構造函數 析構函數概念特征 拷貝構造函數特征 運算符重載 、 >、 < 賦值重載Date類的完善構造函數的完善用復用 類的6個默認成員函數 默認成員函數&#xff1a;不寫編譯器也會默認生成一份 構造函數 自己…

利用Python批量替換文檔中特定參數的數值

情況&#xff1a;有一份文檔需要將其中252個不同值的"sza“替換為另外一組數據 &#xff1b; 其中&#xff0c;替換參數值.txt 的格式就是把要替換的數據粘貼到 txt中&#xff0c;成一列就可以了&#xff1b; PS&#xff1a;要是想改文本文檔里的其他參數&#xff0c;把代…

UnityShader——09數學知識3

方陣 行與列數量相等的矩陣,n*n階矩陣 對角矩陣 當對角線以外的矩陣內元素全為0&#xff0c;則稱之為對角矩陣&#xff0c;對角矩陣的前提是必須是方陣 單位矩陣 對角線元素全為1&#xff0c;其余元素全為0&#xff0c;屬于對角矩陣的一部分 矩陣和向量 把1 * n階矩陣稱…

多個地區地圖可視化

1. 配置Json文件 1.1 獲得每個省份的json數據 打開 阿里云數據可視化平臺 主頁。 在搜索框中輸入所需省份。 將json文件下載到本地。 1.2 將各省份的json數據進行融合 打開 geojson.io 主頁 點擊 open&#xff0c;上傳剛剛下載的 json 文件&#xff0c;對多個省份不斷…

【CSP試題回顧】201409-1-相鄰數對

CSP-201409-1-相鄰數對 解題代碼 #include <iostream> #include <vector> using namespace std;vector<int>arr; int num;int main() {ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;for (int i 0; i < n; i){int t;…

設計模式總結(三)

上一篇總結了設計模式的創建型模式&#xff0c; 接下來總結一下設計模式的幾種結構型模式。 1. 適配器模式 適配器模式允許將一個類的接口轉換成客戶端所期望的另一個接口。適配器模式通常用于以下情況&#xff1a; 當你需要使用一個已經存在的類&#xff0c;但是它的接口與你…

不愧是華為出來的,太厲害了...

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 關注公眾號【互聯網雜貨鋪】&#xff0c;回復 1 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 實習去了博彥科技&#xff08;外包&#xff09;&#xff0c;做的…