算法刷題記錄——LeetCode篇(8.7) [第761~770題](持續更新)

更新時間:2025-03-30

  • 算法題解目錄匯總:算法刷題記錄——題解目錄匯總
  • 技術博客總目錄:計算機技術系列博客——目錄頁

優先整理熱門100及面試150,不定期持續更新,歡迎關注!


763. 劃分字母區間

給你一個字符串 s 。我們要把這個字符串劃分為盡可能多的片段,同一字母最多出現在一個片段中。例如,字符串 "ababcc" 能夠被分為 ["abab", "cc"],但類似 ["aba", "bcc"]["ab", "ab", "cc"] 的劃分是非法的。

注意,劃分結果需要滿足:將所有劃分結果按順序連接,得到的字符串仍然是 s

返回一個表示每個字符串片段的長度的列表。

示例 1:

輸入:s = "ababcbacadefegdehijhklij"
輸出:[9,7,8]

劃分結果為 “ababcbaca”、“defegde”、“hijhklij” 。每個字母最多出現在一個片段中。
像 “ababcbacadefegde”, “hijhklij” 這樣的劃分是錯誤的,因為劃分的片段數較少。

示例 2:

輸入:s = "eccbbbbdec"
輸出:[10]

提示:

  • 1 <= s.length <= 500
  • s 僅由小寫英文字母組成

方法一:貪心算法

  1. 記錄每個字符的最后出現位置:首先遍歷字符串,記錄每個字符最后一次出現的索引,為后續分割提供依據。
  2. 維護當前片段的起止位置:再次遍歷字符串,動態維護當前片段的結束位置,確保所有已遍歷字符的最后出現位置均包含在當前片段中。當遍歷到當前片段的結束位置時,立即分割,確保每個字符僅屬于一個片段,并開始下一個片段的處理。

代碼實現(Java):

class Solution {public List<Integer> partitionLabels(String s) {// 記錄每個字符的最后出現位置int[] lastOccurrence = new int[26];int length = s.length();for (int i = 0; i < length; i++) {char c = s.charAt(i);lastOccurrence[c - 'a'] = i;}List<Integer> partitions = new ArrayList<>();int start = 0, end = 0;for (int i = 0; i < length; i++) {char currentChar = s.charAt(i);// 擴展當前片段的結束位置end = Math.max(end, lastOccurrence[currentChar - 'a']);// 當遍歷到當前片段的結束位置時,分割并記錄if (i == end) {partitions.add(end - start + 1);start = end + 1; // 下一個片段的起始位置}}return partitions;}
}

動態規劃法復雜度分析:

  • 時間復雜度O(n),其中 n 是字符串的長度。兩次遍歷字符串的時間復雜度均為 O(n)
  • 空間復雜度O(1),使用固定大小的數組存儲字符的最后出現位置。

方法二:合并區間(理論補充)

  1. 生成字符區間:記錄每個字符的首次和最后一次出現的位置,生成區間集合。
  2. 合并重疊區間:將所有重疊的區間合并,合并后的每個區間對應一個最終的分段。

合并區間法復雜度分析:

  • 時間復雜度O(n + m log m),其中 m 是不同字符的數量(最多26個),實際性能不如貪心算法。
  • 空間復雜度O(m),需要存儲所有字符的區間。

聲明

  1. 本文版權歸 CSDN 用戶 Allen Wurlitzer 所有,遵循CC-BY-SA協議發布,轉載請注明出處。
  2. 本文題目來源 力扣-LeetCode ,著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

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

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

相關文章

Pod 網絡與 CNI 的作用

在 Kubernetes 中&#xff0c;Pod 網絡 是實現容器間通信的核心機制&#xff0c;每個 Pod 擁有獨立的 IP 地址&#xff0c;可直接跨節點通信。CNI&#xff08;Container Network Interface&#xff09; 是 Kubernetes 的網絡插件標準&#xff0c;負責為 Pod 分配 IP、配置網絡規…

使用keepalived結合tomcat和nginx搭建三主熱備架構

角色主機名軟件IP地址用戶client172.25.250.90keepalivedVIP172.25.250.100keepalivedVIP172.25.250.101keepalivedVIP172.25.250.102masterserverAkeepalived, nginx172.25.250.30backupserverBkeepalived, nginx172.25.250.31backupserverCkeepalived, nginx172.25.250.32web…

STRUCTBERT:將語言結構融入預訓練以提升深度語言理解

【摘要】最近&#xff0c;預訓練語言模型BERT&#xff08;及其經過穩健優化的版本RoBERTa&#xff09;在自然語言理解&#xff08;NLU&#xff09;領域引起了廣泛關注&#xff0c;并在情感分類、自然語言推理、語義文本相似度和問答等各種NLU任務中達到了最先進的準確率。受到E…

leetcode_977. 有序數組的平方_java

977. 有序數組的平方https://leetcode.cn/problems/squares-of-a-sorted-array/ 1.題目 給你一個按 非遞減順序 排序的整數數組 nums&#xff0c;返回 每個數字的平方 組成的新數組&#xff0c;要求也按 非遞減順序 排序。 示例 1&#xff1a; 輸入&#xff1a;nums [-4,-1…

Nginx—nginx.conf 配置結構詳解

一、nginx.conf 配置結構 函數 說明 main 全局配置 event 配置工作模式以及連接數 http http模塊相關配置 server 虛擬主機配置&#xff0c;可以有多個 location 路由規則&#xff0c;表達式 upstream 集群、內網服務器&#xff08;負載均衡也在這里邊配&#xff…

斐波那契數列----C語言

關于斐波那契 已知&#xff1a; 問題背景&#xff1a;一對兔子從第3個月開始每月生一對新兔子&#xff0c;新兔子同樣在第3個月開始繁殖。 關鍵觀察&#xff1a; 第1個月&#xff1a;1對&#xff08;初始兔子&#xff09;。 第2個月&#xff1a;1對&#xff08;未成熟&#…

vulhub靶場—— Tomcat8

目錄 一、漏洞描述 二、靶場搭建 三、漏洞復現 1、弱密碼 2、文件上傳 一、漏洞描述 環境描述&#xff1a; Tomcat 支持后臺部署 war 文件&#xff0c;可以直接將 webshell 部署到 web 目錄下。tomcat 默認的管理頁面 manager 使用 basic 認證用戶名和密碼登錄&#xff0…

使用 Spring AI Aliabab Module RAG 構建 Web Search 應用

使用 Spring AI Alibaba 構建大模型聯網搜索應用 Spring AI 實現了模塊化 RAG 架構&#xff0c;架構的靈感來自于論文“模塊化 RAG&#xff1a;將 RAG 系統轉變為類似樂高的可重構框架”中詳述的模塊化概念。 Spring AI 模塊化 RAG 體系 總體上分為以下幾個步驟&#xff1a; …

一些練習 C 語言的小游戲

一些練習 C 語言的小游戲 — 1. 猜數字游戲 描述&#xff1a;程序隨機生成一個數字&#xff0c;玩家需要猜測這個數字&#xff0c;并根據提示&#xff08;太高或太低&#xff09;調整猜測&#xff0c;直到猜中為止。 功能點&#xff1a; 隨機數生成 (rand() 函數)。循環和…

關于中文編程的一些思考

隨著信息化與數字化的發展&#xff0c;工業4.0時代亦將徐徐到來。當計算機的普及程度越來越高&#xff0c;數據的產生、傳輸、處理等變得越來越快、越來越大量的時候&#xff0c;人們想要自動化辦公的愿望也越來越強烈&#xff0c;希望能將自身從耗費腦力但是重復繁瑣的工作中解…

golang 日志log與logrus

目錄 一、Go 標準庫 log 詳解 1. 功能特點 2. 常用函數 3. 示例代碼 4. 優勢和局限 二、第三方庫 logrus 詳解 1. 功能特點 2. 核心功能 3. 示例代碼 4. 優勢和擴展性 三、總結 1. 何時選擇 log&#xff1f; 2. 何時選擇 logrus&#xff1f; 3. 對比總結 一、Go 標…

消費品行業創新創業中品類創新與數字化工具的融合:以開源 AI 智能客服、AI 智能名片及 S2B2C 商城小程序為例

摘要&#xff1a; 本文聚焦于消費品行業的創新與創業&#xff0c;深入探討“選擇大于努力”這一觀點&#xff0c;強調品類選擇在品牌發展中的關鍵作用。同時&#xff0c;詳細分析了品類創新對于新消費品牌崛起以及傳統品牌轉型的重要意義。在此基礎上&#xff0c;引入開源 AI 智…

Razer macOS v0.4.10快速安裝

鏈接點這里下載最新的 .dmg 文件。將下載的 .dmg 映像文件拖入 應用程序 文件夾中。若首次打開時出現安全警告【什么扔到廢紙簍】&#xff0c;這時候點擊 Mac 的“系統偏好設置”-> “安全性與隱私”-> “通用”&#xff0c;然后點擊底部的 “打開”。【或者仍然打開】 對…

Flask項目部署:Flask + uWSGI + Nginx

目錄 1,網絡架構 2,環境安裝 2.1,安裝yum:Shell軟件包管理器 2.2 安裝python 2.3 安裝uWSGI 2.4 安裝Flask 3,上傳工程包到服務器,打包Flask項目 4,創建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注釋詳解 5,啟動服務 6,安裝nginx 7,nginx配置 8,…

[FPGA基礎學習]實現流水燈與按鍵暫停

FPGA實現LED流水燈 1.vscode的安裝和使用 vscode下載 Visual Studio Code - Code Editing. Redefined vscode插件&#xff08;Verilog-HDL/SystemVerilog&#xff09;下載 quartus綁定vscode 2.用6個LED完成周期為1秒的跑馬燈效果 流水燈模塊設計 時鐘輸入 DE2-115開發板…

【TensorRT】TensorRT從安裝到推理——Python 環境下 MobileNetV4 三分類任務

我想開發一個基于深度學習的分類小軟件&#xff0c;逐漸了解到了TensorRT在模型推理速度上的優勢&#xff0c;經過一下午資料的查找實現了將onnx模型轉為TensorRT格式模型的推理及測試過程。將實現過程記錄下來方便日后查看。 本文實驗設備是MX350顯卡 2G顯存 一 、安裝Tenso…

1.兩數之和(Java)

1. 題目描述 LeetCode 1. 兩數之和&#xff08;Two Sum&#xff09; 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那兩個整數&#xff0c;并返回它們的索引。 示例 1&#xff1a; 輸入&#xff1a;nums [2,7,11,15], target 9 …

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》

《深入探索 Python 數據分析:用 Pandas 高效處理與可視化大型數據集》 引言:從零到分析高手 數據是當代社會最寶貴的資源,而數據分析技能是現代職業人不可或缺的一部分。在數據科學的領域中,Python 已成為當之無愧的“首選語言”,其強大的生態系統和簡潔的語法讓人如虎添…

將樹莓派5當做Ollama服務器,C#調用generate的API的示例

其實完全沒這個必要&#xff0c;性能用腳后跟想都會很差。但基于上一篇文章的成果&#xff0c;來都來了就先簡單試試吧。 先來看看這個拼夕夕上五百多塊錢能達到的效果&#xff1a; 只要對速度沒要求&#xff0c;那感覺就還行。 Ollama默認只在本地回環&#xff08;127.0.0…

python基礎學習二(列表及字典的使用)

文章目錄 列表列表的創建獲取列表中的多個元素判斷列表中元素是否存在列表元素的添加操作列表元素的刪除操作列表元素的修改列表的排序列表生成式 字典字典的創建字典的常規操作字典的常用操作字典的視圖操作字典元素的遍歷字典的特點字典的生成式 列表 一個對象由id&#xff0…