代碼隨想錄-算法訓練營day35【貪心算法05:無重疊區間、劃分字母區間、合并區間】

代碼隨想錄-035期-算法訓練營【博客筆記匯總表】-CSDN博客

第八章 貪心算法 part05● 435. 無重疊區間 
● 763.劃分字母區間 
● 56. 合并區間 詳細布置  今天的三道題目,都算是 重疊區間 問題,大家可以好好感受一下。 都屬于那種看起來好復雜,但一看貪心解法,驚呼:這么巧妙! 
還是屬于那種,做過了也就會了,沒做過就很難想出來。
不過大家把如下三題做了之后, 重疊區間 基本上差不多了435. 無重疊區間 https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html  763.劃分字母區間 https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html  56. 合并區間  
本題相對來說就比較難了。https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html  往日任務
● day 1 任務以及具體安排:https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY  
● day 2 任務以及具體安排:https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG  
● day 3 任務以及具體安排:https://docs.qq.com/doc/DUGdqYWNYeGhlaVR6 
● day 4 任務以及具體安排:https://docs.qq.com/doc/DUFNjYUxYRHRVWklp 
● day 5 周日休息
● day 6 任務以及具體安排:https://docs.qq.com/doc/DUEtFSGdreWRuR2p4 
● day 7 任務以及具體安排:https://docs.qq.com/doc/DUElCb1NyTVpXa0Jj 
● day 8 任務以及具體安排:https://docs.qq.com/doc/DUGdsY2JFaFhDRVZH 
● day 9 任務以及具體安排:https://docs.qq.com/doc/DUHVXSnZNaXpVUHN4 
● day 10 任務以及具體安排:https://docs.qq.com/doc/DUElqeHh3cndDbW1Q 
●day 11 任務以及具體安排:https://docs.qq.com/doc/DUHh6UE5hUUZOZUd0 
●day 12 周日休息 
●day 13 任務以及具體安排:https://docs.qq.com/doc/DUHNpa3F4b2dMUWJ3 
●day 14 任務以及具體安排:https://docs.qq.com/doc/DUHRtdXZZSWFkeGdE 
●day 15 任務以及具體安排:https://docs.qq.com/doc/DUHN0ZVJuRmVYeWNv 
●day 16 任務以及具體安排:https://docs.qq.com/doc/DUHBQRm1aSWR4T2NK 
●day 17 任務以及具體安排:https://docs.qq.com/doc/DUFpXY3hBZkpabWFY 
●day 18 任務以及具體安排:https://docs.qq.com/doc/DUFFiVHl3YVlReVlr 
●day 19 周日休息
●day 20 任務以及具體安排:https://docs.qq.com/doc/DUGFRU2V6Z1F4alBH  
●day 21 任務以及具體安排:https://docs.qq.com/doc/DUHl2SGNvZmxqZm1X 
●day 22 任務以及具體安排:https://docs.qq.com/doc/DUHplVUp5YnN1bnBL  
●day 23 任務以及具體安排:https://docs.qq.com/doc/DUFBUQmxpQU1pa29C 
●day 24 任務以及具體安排:https://docs.qq.com/doc/DUEhsb0pUUm1WT2NP  
●day 25 任務以及具體安排:https://docs.qq.com/doc/DUExTYXVzU1BiU2Zl 
●day 26 休息 
●day 27 任務以及具體安排:https://docs.qq.com/doc/DUElpbnNUR3hIbXlY 
●day 28 任務以及具體安排:https://docs.qq.com/doc/DUG1yVHdlWEdNYlhZ  
●day 29 任務以及具體安排:https://docs.qq.com/doc/DUHZYbWhwSHRCRmp3 
●day 30 任務以及具體安排:https://docs.qq.com/doc/DUEdTVVhxbnJiY3BR 
●day 31 任務以及具體安排:https://docs.qq.com/doc/DUG1PQ1ZZY2xXY1ly 
●day 32 任務以及具體安排:https://docs.qq.com/doc/DUGFEdGFWeVhleFF1 
●day 33 周日休息 
●day 34 任務以及具體安排:https://docs.qq.com/doc/DUEh5WFVlQkp1U0p4  
●day 35 任務以及具體安排:https://docs.qq.com/doc/DUFRWc3BGRHFXZ1pO

目錄

0435_無重疊區間

0763_劃分字母區間

0056_合并區間


0435_無重疊區間

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;import java.util.Arrays;public class _0435_無重疊區間 {
}class Solution0435 {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a, b) -> {return Integer.compare(a[0], b[0]);});int count = 1;for (int i = 1; i < intervals.length; i++) {if (intervals[i][0] < intervals[i - 1][1]) {intervals[i][1] = Math.min(intervals[i - 1][1], intervals[i][1]);continue;} else {count++;}}return intervals.length - count;}
}class Solution0435_2 {//按左邊排序,不管右邊順序。相交的時候取最小的右邊。public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a, b) -> {return Integer.compare(a[0], b[0]);});int remove = 0;int pre = intervals[0][1];for (int i = 1; i < intervals.length; i++) {if (pre > intervals[i][0]) {remove++;pre = Math.min(pre, intervals[i][1]);} else pre = intervals[i][1];}return remove;}
}

0763_劃分字母區間

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;public class _0763_劃分字母區間 {
}class Solution0763 {public List<Integer> partitionLabels(String s) {List<Integer> list = new LinkedList<>();int[] edge = new int[26];char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {edge[chars[i] - 'a'] = i;}int idx = 0;int last = -1;for (int i = 0; i < chars.length; i++) {idx = Math.max(idx, edge[chars[i] - 'a']);if (i == idx) {list.add(i - last);last = i;}}return list;}
}class Solution0763_2 {/*解法二: 上述c++補充思路的Java代碼實現*/public int[][] findPartitions(String s) {List<Integer> temp = new ArrayList<>();int[][] hash = new int[26][2];//26個字母2列 表示該字母對應的區間for (int i = 0; i < s.length(); i++) {//更新字符c對應的位置ichar c = s.charAt(i);if (hash[c - 'a'][0] == 0) hash[c - 'a'][0] = i;hash[c - 'a'][1] = i;//第一個元素區別對待一下hash[s.charAt(0) - 'a'][0] = 0;}List<List<Integer>> h = new LinkedList<>();//組裝區間for (int i = 0; i < 26; i++) {//if (hash[i][0] != hash[i][1]) {temp.clear();temp.add(hash[i][0]);temp.add(hash[i][1]);//System.out.println(temp);h.add(new ArrayList<>(temp));// }}// System.out.println(h);// System.out.println(h.size());int[][] res = new int[h.size()][2];for (int i = 0; i < h.size(); i++) {List<Integer> list = h.get(i);res[i][0] = list.get(0);res[i][1] = list.get(1);}return res;}public List<Integer> partitionLabels(String s) {int[][] partitions = findPartitions(s);List<Integer> res = new ArrayList<>();Arrays.sort(partitions, (o1, o2) -> Integer.compare(o1[0], o2[0]));int right = partitions[0][1];int left = 0;for (int i = 0; i < partitions.length; i++) {if (partitions[i][0] > right) {//左邊界大于右邊界即可記為一次分割res.add(right - left + 1);left = partitions[i][0];}right = Math.max(right, partitions[i][1]);}//最右端res.add(right - left + 1);return res;}
}

0056_合并區間

package com.question.solve.leetcode.programmerCarl2._09_greedyAlgorithms;import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;public class _0056_合并區間 {
}/*** 時間復雜度:O(NlogN) 排序需要 O(NlogN)* 空間復雜度:O(logN)  java的內置排序是快速排序,需要 O(logN) 空間*/
class Solution0056 {public int[][] merge(int[][] intervals) {List<int[]> res = new LinkedList<>();//按照左邊界排序Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));//initial start 是最小左邊界int start = intervals[0][0];int rightmostRightBound = intervals[0][1];for (int i = 1; i < intervals.length; i++) {//如果左邊界大于最大右邊界if (intervals[i][0] > rightmostRightBound) {//加入區間 并且更新startres.add(new int[]{start, rightmostRightBound});start = intervals[i][0];rightmostRightBound = intervals[i][1];} else {//更新最大右邊界rightmostRightBound = Math.max(rightmostRightBound, intervals[i][1]);}}res.add(new int[]{start, rightmostRightBound});return res.toArray(new int[res.size()][]);}
}class Solution0056_2 {//版本2public int[][] merge(int[][] intervals) {LinkedList<int[]> res = new LinkedList<>();Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));res.add(intervals[0]);for (int i = 1; i < intervals.length; i++) {if (intervals[i][0] <= res.getLast()[1]) {int start = res.getLast()[0];int end = Math.max(intervals[i][1], res.getLast()[1]);res.removeLast();res.add(new int[]{start, end});} else {res.add(intervals[i]);}}return res.toArray(new int[res.size()][]);}
}

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

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

相關文章

AI預測福彩3D+排3實戰化賺米驗證第6彈2024年5月10日第6次測試

由于最近幾天會比較忙&#xff0c;空閑時間較少&#xff0c;為了盡快的發布預測結果&#xff0c;今天繼續把3D和排3合并至一篇文章進行發布。好了&#xff0c;直接上結果吧&#xff5e; 1.5月10日3D預測結果 百位&#xff1a;4、5、6、3、1、0 十位&#xff1a;4、2、5、7、…

一個可以同時使用USB和WIFI傳輸文件到電腦的軟件

雙軌快傳 結合USB2.0和WIFI6技術&#xff0c;通過1000Mbps網口實現每秒高達150MB的傳輸速率&#xff08;理論上可達40MB/s通過USB和110MB/s通過WIFI&#xff09;。 使用 模式 支持普通模式和Root模式&#xff0c;Root模式可訪問~/Android/data/與/data/data/目錄下的文件。 …

ETL-kettle數據轉換及組件使用詳解

目錄 一、txt文本轉換成excel 1、新建、轉換 2、構建流程圖 3、配置數據流圖中的各個組件 3.1、配置文件文本輸入組件 3.2、 配置Excel輸出組件 4、保存執行 二、excel轉換成mysql &#xff08;1&#xff09;在MySQL數據庫中創建數據庫&#xff0c;這個根據自身情況。我…

一文了解spring的aop知識

推薦工具 objectlog 對于重要的一些數據&#xff0c;我們需要記錄一條記錄的所有版本變化過程&#xff0c;做到持續追蹤&#xff0c;為后續問題追蹤提供思路。objectlog工具是一個記錄單個對象屬性變化的日志工具,工具采用spring切面和mybatis攔截器相關技術編寫了api依賴包&a…

機器學習實戰寶典:用scikit-learn打造智能應用

書接上文——《數據探險家的終極指南&#xff1a;用Python挖掘機器學習的奧秘》 前文我們在這段精彩的機器學習探險之旅中&#xff0c;從基礎概念出發&#xff0c;深入探索了使用Python和scikit-learn庫進行數據分析和模型構建的全過程。 我們首先了解了機器學習的基本原理&am…

Mysql 鎖

鎖 從鎖的性能有樂觀鎖和悲觀鎖&#xff1b;鎖的粒度有行鎖、頁鎖、表鎖&#xff1b;鎖的對數據庫操作類型有讀鎖、寫鎖、意向鎖 樂觀鎖&#xff1a;采用cas機制&#xff0c;不會阻塞數據庫操作&#xff0c;只會針對當前事務進行失敗重試。(用于寫操作不多的情況)悲觀鎖&…

[c++]多態的分析

多態詳細解讀 多態的概念多態的構成條件 接口繼承和實現繼承: 多態的原理:動態綁定和靜態綁定 多繼承中的虛函數表 多態的概念 -通俗的來說&#xff1a;當不同的對象去完成某同一行為時&#xff0c;會產生不同的狀態。 多態的構成條件 必須通過基類的指針或者引用調用虛函數1虛…

【C++刷題】優選算法——遞歸第一輯

什么是遞歸&#xff1f; 函數自己調用自己的情況為什么會用到遞歸&#xff1f; 本質&#xff1a;在解決主問題的時候衍生出一個相同處理過程的子問題&#xff0c;子問題再繼續衍生子問題…如何理解遞歸&#xff1f; 第一層次的理解&#xff1a;遞歸展開的細節圖第二層次的理解&…

C語言/數據結構——(鏈表的回文結構)

一.前言 今天在牛客網上刷到了一道鏈表題——鏈表的回文結構https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?&#xff0c;巧合的是它的解題思路恰好是我們一起分享過兩道鏈表題的匯總。這兩道題分別是反轉鏈表和鏈表的中間節點。廢話不多數&#xff0c…

mybatis 多表查詢

一對一&#xff1a; 第一&#xff1a;在一中的類添加另外一個類作為屬性。如&#xff08;在Order類中添加private User orderUser;&#xff09; 第二&#xff1a;在mapper.xml配置關聯。&#xff08;mapper接口不變&#xff09; <!-- resultMap標簽&#xff1a;解決查詢結…

Redis 源碼安裝和入門介紹

Linux下的redis源碼安裝 redis介紹 Redis 是一個開源&#xff08;BSD許可&#xff09;的&#xff0c;內存中的數據結構存儲系統&#xff0c;它可以用作數據庫、緩存和消息中間件。它支持多種類型的數據結構&#xff0c;如 字符串&#xff08;strings&#xff09;&#xff0c;…

智能商品計劃系統:引領未來零售業的革新之路

隨著科技的飛速發展&#xff0c;人工智能&#xff08;AI&#xff09;和大數據技術已成為推動各行業革新的關鍵動力。在零售行業中&#xff0c;智能商品計劃系統的出現&#xff0c;正逐步改變著傳統的商品規劃與管理方式&#xff0c;為品牌注入新的活力與競爭力。本文將對智能商…

Java入門基礎學習筆記14——數據類型轉換

類型轉換&#xff1a; 1、存在某種類型的變量賦值給另一種類型的變量&#xff1b; 2、存在不同類型的數據一起運算。 自動類型轉換&#xff1a; 類型范圍小的變量&#xff0c;可以直接賦值給類型范圍大的變量。 byte類型賦值給int類型&#xff0c;就是自動類型轉換。 pack…

基于大數據的醫療信息化系統

基于大數據的醫療信息化系統是一個復雜且不斷發展的領域,它結合了現代信息技術和醫療專業知識,以提高醫療服務的效率、質量和可及性。以下是一個關于基于大數據的醫療信息化系統的概述 一、引言 隨著信息技術的快速發展和醫療改革的深入推進,醫療信息化已成為醫療領域的重…

Android 屏幕適配全攻略(中)-從九宮格到矢量圖,揭秘Android多屏幕適配的正確打開方式

在移動互聯網時代&#xff0c;無論是小小的手機屏幕&#xff0c;還是大大的平板顯示器&#xff0c;Android 應用都必須做到完美適配&#xff0c;給用戶以極佳的體驗。本文將剖析 Android 多屏幕適配背后的種種技術細節&#xff0c;為您揭開最佳實踐的正確打開方式&#xff0c;讓…

速賣通ip地址會相互影響嗎?如何防止賬號關聯?

在跨境電商行業&#xff0c;大部分平臺都是不允許一個賣家操作多個店鋪的&#xff0c;如果被平臺檢測出賬戶關聯&#xff0c;可能會被封店。在速賣通平臺&#xff0c;會通過IP地址來判斷是否經營多個賬號嗎?IP地址會使店鋪相互影響嗎? 一、速賣通IP地址會關聯嗎? 首先各位賣…

解決mybatis的配置文件沒代碼提示的問題

1.將org.apache.ibatis.builder.xml包里的兩個dtd文件復制出來&#xff0c;jar包里復制 2.復制dtd的url地址&#xff1a; http://mybatis.org/dtd/mybatis-3-mapper.dtd 一樣的做法&#xff01; 3.關閉兩個配置文件&#xff0c;重新打開&#xff0c;就可以有代碼提示了&…

【智能優化算法】白鯊智能優化算法(White Shark Optimizer,WSO)

白鯊智能優化算法(White Shark Optimizer,WSO)是期刊“KNOWLEDGE-BASED SYSTEMS”&#xff08;中科院一區期刊 IF8.6&#xff09;的2022年智能優化算法 01.引言 白鯊智能優化算法(White Shark Optimizer,WSO)的核心理念和基礎靈感來自大白鯊的行為&#xff0c;包括它們在導航和…

從項目開始學習Vue——02(若依框架)

往期&#xff1a; 從項目開始學習Vue——01 目錄標題 一、基礎插件&#xff08;一&#xff09;路由Vue Router&#xff08;二&#xff09;導航守衛&#xff08;路由攔截器&#xff09;二、Vuex&#xff08;一&#xff09;什么是VuexVuex的部分介紹內容&#xff1a; &#xff08…

QQ超大文件共享(別用,傳進去后,壓縮都顯示不出來,LJ qq!)(共享文件)

文章目錄 需要共享雙方同時在線開啟方法第一次會提示設置默認共享目錄&#xff0c;默認是E:\QQFileShare\<qq號>\&#xff1a;然后新建共享會在其后創建共享目錄&#xff0c;共享目錄中只能共享文件。需要點擊添加文件&#xff0c;直接把文件拷貝到目錄里好像還不行&…