Leetcoder Day32| 貪心算法part05

?763.劃分字母區間?

字符串 S 由小寫字母組成。我們要把這個字符串劃分為盡可能多的片段,同一字母最多出現在一個片段中。返回一個表示每個字符串片段的長度的列表。

示例:

  • 輸入:S = "ababcbacadefegdehijhklij"
  • 輸出:[9,7,8] 解釋: 劃分結果為 "ababcbaca", "defegde", "hijhklij"。 每個字母最多出現在一個片段中。 像 "ababcbacadefegde", "hijhklij" 的劃分是錯誤的,因為劃分的片段數較少

之前在回溯部分,有用回溯算法分割過字符串,但是屬于暴力搜索,時間復雜度較高。

題目要求同一字母最多出現在一個片段中,并且劃分盡可能多的片段,那么如何把同一個字母的都圈在同一個區間里呢?就是找到出現過的字母的最大終止位置。

可以分為如下兩步:

  • 統計每一個字符最后出現的位置
  • 從頭遍歷字符,并更新字符的最遠出現下標,如果找到字符最遠出現位置下標和當前下標相等了,則找到了分割點

class Solution {public List<Integer> partitionLabels(String s) {LinkedList<Integer> list=new LinkedList<>();int[] edge=new int[26]; char[] chars=s.toCharArray(); //將一個字符串轉換成一個字符(char)數組。//比如abecadf 那么edge[0]存儲的就是a出現的次數for(int i=0;i<chars.length;i++){edge[chars[i]-'a']=i;  //統計每個字符出現的最后位置 ,按照字母的順序存儲}int idx=0, 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;}
}

56. 合并區間

給出一個區間的集合,請合并所有重疊的區間。

示例 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] 可被視為重疊區間。
  • 注意:輸入類型已于2019年4月15日更改。 請重置默認代碼定義以獲取新方法簽名。

依舊是重疊區間問題,先按照start排序,再進行重疊判斷,本題相鄰區域也算重疊,因此若intervals[i][0]<=intervals[i-1][1],則有重疊。若有重疊,則將區間的左右邊界判斷更新end使之成為兩個區間的最遠end,加入result數組,若不重合,更新start和end,直接加入原區間。

class Solution {public int[][] merge(int[][] intervals) {List<int[]> res=new LinkedList<>();Arrays.sort(intervals, (a,b)->Integer.compare(a[0], b[0]));int start=intervals[0][0];int end =intervals[0][1];for(int i=1;i<intervals.length;i++){if(intervals[i][0]>end){//不重疊res.add(new int[]{start, end});//將當前節點加入resstart=intervals[i][0];  //更新startend=intervals[i][1];}else{end=Math.max(end, intervals[i][1]); //更新最大右邊界}}res.add(new int[]{start, end});return res.toArray(new int[res.size()][]);}
}

這里要注意一個語法基礎??在鏈表list里面添加值,然后把list鏈表添加進res鏈表中,在做算法題的時候,如果使用res.add(list),輸出打印為空,因此需要res.add(new LinkedList<Integer>(list))。同理,在這里如果想要給鏈表res添加新的數組,一定也要res.add(new int[]{start, end});

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

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

相關文章

今日早報 每日精選15條新聞簡報 每天一分鐘 知曉天下事 3月2日,星期六

每天一分鐘&#xff0c;知曉天下事&#xff01; 2024年3月2日 星期六 農歷正月廿二 1、 氣象局&#xff1a;3月份仍有5次冷空氣影響我國&#xff1b;全國多地或提前入春。 2、 央行&#xff1a;將外籍來華人員移動支付單筆交易限額由1000美元提高到5000美元。 3、 神舟十七號航…

全量知識系統問題及SmartChat給出的答復 之8 三套工具之3語法解析器 之1

Q19. 問題 : 解釋單詞解釋單詞occupied 的字典條目 (word-def occupiedinterest 5type EBsubclass SEBtemplate (script $Demonstrateactor nilobject nildemands nilmethod (scene $Occupyactor nillocation nil))fill (((actor) (top-of *actor-s…

【源碼】imx6ull實現觸摸屏單點實驗

一、本實驗實驗的器材&#xff1a; 1.正點原子imx6ull的阿爾法開發板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、實驗已經移植好的文件&#xff1a; 倉庫代碼&#xff1a;https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件說明 23_multitouch &#xff1a;驅動代…

aws平臺的ec2實例 GNU/Linux系統安裝docker流程

在AWS EC2實例上安裝Docker的流程與其他GNU/Linux系統基本相同。以下是在AWS EC2實例上安裝Docker的一般步驟&#xff1a; 登錄到AWS EC2實例&#xff1a; 使用SSH或者其他遠程登錄方式登錄到你的GNU/Linux實例。 更新系統包管理器&#xff1a; 對于基于Amazon Linux的系統&am…

常見Prometheus exporter部署

常見Prometheus exporter部署 Prometheus部署Node exporterProcess exporterRedis exporterMySQL exporterOracleDB exporter Prometheus部署 本地部署&#xff1a; wget https://github.com/prometheus/prometheus/releases/download/v*/prometheus-*.*-amd64.tar.gz tar xv…

java的jar打包docker鏡像,啟動加載

測試環境&#xff0c;打包鏡像 1,把jar包復制/data/liu/mssda.jar, cd到這個目錄下 2&#xff0c;創建Dockerfile文件&#xff0c;jdk17版本&#xff0c;內容如下 jdk8版本 FROM openjdk:8-jre-alpine WORKDIR /app COPY . /app CMD ["java", "-jar",…

最大奇約數(c++題解)

內存限制&#xff1a; 128 MiB時間限制&#xff1a; 100 ms標準輸入輸出題目類型&#xff1a; 傳統評測方式&#xff1a; 文本比較 題目描述 定義函數f(x)表示x的最大奇約數&#xff0c;這里x表示正整數。例如&#xff0c;f(20) 5&#xff0c;因為20的約數從小到大分別有&am…

奧地利羅馬尼亞媒體宣發稿對跨境出海推廣新聞營銷的意義

【本篇由言同數字科技有限公司原創】在當今全球化的時代&#xff0c;品牌跨境海外推廣已成為企業拓展國際市場的必要途徑。而奧地利和羅馬尼亞是歐洲重要的市場之一&#xff0c;通過在當地媒體上發表文章&#xff0c;可以幫助品牌成功打入這兩個市場&#xff0c;獲得更多的機會…

【YOLO v5 v7 v8 小目標改進】ODConv:在卷積核所有維度(數量、空間、輸入、輸出)上應用注意力機制來優化傳統動態卷積

ODConv&#xff1a;在卷積核所有維度&#xff08;數量、空間、輸入、輸出&#xff09;上應用注意力機制來優化傳統的動態卷積 提出背景傳統動態卷積全維動態卷積效果 小目標漲點YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 論文&#xff1a;https://openreview.net/pdf?idDmpCfq6Mg…

leedcode刷題--day7(字符串)

23 文章講解 力扣地址 C class Solution { public:void reverseString(vector<char>& s) {int left 0;int right s.size() - 1; // right 應該初始化為 s.size() - 1while (left < right) {swap(s[left], s[right]); // 直接交換 s[left] 和 s[right] 的值lef…

(學習日記)2024.02.29:UCOSIII第二節

寫在前面&#xff1a; 由于時間的不足與學習的碎片化&#xff0c;寫博客變得有些奢侈。 但是對于記錄學習&#xff08;忘了以后能快速復習&#xff09;的渴望一天天變得強烈。 既然如此 不如以天為單位&#xff0c;以時間為順序&#xff0c;僅僅將博客當做一個知識學習的目錄&a…

WSL2外部網絡設置

1 關閉所有WSL系統 wsl --shutdown 2 打開Hyper-V管理器 3 將“虛擬交換機管理器”-> ”WSL連接類型“設置為“外部網絡” 4 啟動WSL系統&#xff0c;手動修改WSL網絡 將WSL網絡IP修改為192.168.1.9 sudo ip addr del $(ip addr show eth0 | grep inet\b | awk {print $2} |…

FFmpeg+OpenCV開發案例匯總

桌面共享工具&#xff08;軟編版&#xff09; 桌面共享工具&#xff08;DXGI硬編版&#xff09; 智能廣告大屏&#xff08;可疊加透明廣告&#xff09; Android手機屏幕RTMP推流工具&#xff08;推麥克風版&#xff09; Android手機屏幕RTMP推流工具&#xff08;推揚聲器版…

FinalMLP:用于推薦系統的簡單但強大的雙流 MLP 模型

原文地址&#xff1a;FinalMLP: A Simple yet Powerful Two-Stream MLP Model for Recommendation Systems 了解 FinalMLP 如何轉變在線推薦&#xff1a;通過尖端 AI 研究解鎖個性化體驗 2024 年 2 月 14 日 介紹 世界正在向數字時代發展&#xff0c;在這個時代&#xff0c;…

Python并發編程:多線程-死鎖現象與遞歸鎖

一  死鎖現象 所謂死鎖&#xff1a;是指兩個或兩個以上的進程或線程在執行過程中&#xff0c;因爭奪資源而造成的一種互相等待的現象&#xff0c;若無外力作用&#xff0c;它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖&#xff0c;這些永遠在互相等待的進程…

持安科技孫維伯:零信任在攻防演練下的最佳實踐|DISCConf 2023

近日&#xff0c;在2023數字身份安全技術大會上&#xff0c;持安科技聯合創始人孫維伯應主辦方的特別邀請&#xff0c;發表了主題為“零信任在攻防演練下的最佳實踐”的演講。 孫維伯在2023數字身份安全技術大會上發表演講 以下為本次演講實錄&#xff1a; 我是持安科技的聯合…

【c++】 STL的組件簡介與容器的使用時機

STL六大組件簡介 STL提供了六大組件&#xff0c;彼此之間可以組合套用&#xff0c;這六大組件分別是:容器、算法、迭代器、仿函數、適配器&#xff08;配接器&#xff09;、空間配置器。 容器&#xff1a;各種數據結構&#xff0c;如vector、list、deque、set、map等,用來存放…

微信云開發-- Mac安裝 wx-server-sdk依賴

第一次上傳部署云函數時&#xff0c;會提示安裝依賴wx-server-sdk 一. 判斷是否安裝wx-server-sdk依賴 先創建一個云函數&#xff0c;然后檢查云函數目錄。 如果云函數目錄下只顯示如下圖所示三個文件&#xff0c;說明未安裝依賴。 如果云函數目錄下顯示如下圖所示四個文件&a…

EdgeX Foundry 邊緣物聯網中間件平臺

文章目錄 1.EdgeX Foundry2.平臺架構3.平臺服務3.1.設備服務3.2.核心服務3.3.支持服務3.4.應用服務3.5.安全服務3.6.管理服務 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs/edgex/edgex-foundry/1.EdgeX Foundry EdgeX Found…

Linux下設置網關以及網絡相關命令

在Linux下設置網關以及進行網絡相關的操作&#xff0c;通常需要使用一系列的命令。以下是一些常用的命令和步驟&#xff1a; 查看網絡接口信息 ifconfig&#xff1a;用于查看網絡接口的狀態和配置信息&#xff08;已淘汰&#xff09;。ip link&#xff1a;顯示本地的鏈路層設…