hot100-貪心算法(附圖解思路)

貪心算法的核心,就是用局部最優去代替全局最優。

一般的步驟就是去試思路,然后舉反例,如果舉不出反例,基本可以看作是正確的方法。

121.?買賣股票的最佳時機(Best Time to Buy and Sell Stock)

難度:?簡單
題目描述:
給定一個數組,它的第?i?個元素是某支股票第?i?天的價格。你可以選擇某一天買入該股票,并在未來某一天賣出股票,求最大利潤。你不能在買入股票之前賣出股票。

示例:

  • 輸入:[7, 1, 5, 3, 6, 4]

  • 輸出:5
    解釋:?在第 2 天(價格 = 1)買入,在第 5 天(價格 = 6)賣出,最大利潤為?6 - 1 = 5

  • 輸入:[7, 6, 4, 3, 1]

  • 輸出:0
    解釋:?在這個情況下, 沒有交易發生, 所以最大利潤是?0

class Solution:def maxProfit(self, prices: List[int]) -> int:minprice = float('inf')res = 0for i in range(len(prices)):if prices[i] < minprice:minprice = prices[i]res = max(res,prices[i] - minprice)return res

這道題可以用折線圖來表示:

?

55.??跳躍游戲(Jump Game)

難度:?中等
題目描述:
給定一個非負整數數組?nums,其中每個元素表示你在該位置可以跳躍的最大長度。判斷你是否能夠從數組的第一個位置跳到最后一個位置。你可以跳躍的最大長度隨時變化,但每次只能跳躍一次。

示例:

  • 輸入:[2, 3, 1, 1, 4]

  • 輸出:true
    解釋:?從第 1 個位置開始,你可以跳躍到第 2 個位置,再跳躍到第 4 個位置,從而到達最后一個位置。

  • 輸入:[3, 2, 1, 0, 4]

  • 輸出:false
    解釋:?無論你從哪個位置開始,都無法到達最后一個位置。

class Solution:def canJump(self, nums: List[int]) -> bool:cover = 0 for i in range(len(nums)):if i > cover:return Falsecover = max(cover,i+nums[i])return True

45.?跳躍游戲 II(Jump Game II)

難度:?中等
題目描述:
給定一個非負整數數組?nums,其中每個元素表示你在該位置可以跳躍的最大長度。你需要找到從數組的第一個位置跳到最后一個位置的最小跳躍次數。

示例:

  • 輸入:[2, 3, 1, 1, 4]

  • 輸出:2
    解釋:?最小跳躍次數是 2。你可以從第 1 個位置跳到第 2 個位置,再跳躍到第 5 個位置。

  • 輸入:[1, 2, 3, 4, 5]

  • 輸出:3
    解釋:?最小跳躍次數是 3。你可以從第 1 個位置跳到第 2 個位置,再跳躍到第 4 個位置,最后到達最后一個位置。

class Solution:def jump(self, nums: List[int]) -> int:cover = 0jump = 0cur_end = 0for i in range(len(nums)-1):cover = max(cover,i+nums[i])if i == cur_end:jump += 1cur_end = coverreturn jump

這道題的與上一道題的不同點在于,這道題一定能夠到達終點。

cover依然代表覆蓋的最大范圍。

jump代表次數,而cur_end代表當前這一跳的最遠距離,一旦到達這一跳最遠距離,就需要往下一跳去了,這時候就要更新下一跳的最遠距離為當前的cover最遠。

763.?劃分字母區間(Partition Labels)

難度:?中等
題目描述:
給定一個字符串?S,將字符串分成盡可能多的部分,使得每個字母只出現在一個部分。返回一個表示每個部分的大小的列表。

示例:

  • 輸入:"ababcbacadefegdehijhklij"

  • 輸出:[9, 7, 8]
    解釋:
    按照如下劃分:

    • "ababcbaca"?包含了字母?'a',?'b',?'c'

    • "defegde"?包含了字母?'d',?'e',?'f',?'g'

    • "hijhklij"?包含了字母?'h',?'i',?'j',?'k',?'l'

  • 輸入:"eccbbbbdec"

  • 輸出:[10]
    解釋:?字符串只有一個區間。

class Solution:def partitionLabels(self, s: str) -> List[int]:# 記錄每個字符最后的位置last = {c:i for i,c in enumerate(s)}res = []start = end = 0for i,c in enumerate(s):end = max(end,last[c])if end == i:res.append(end - start +1)start = i + 1return res

有個式子需要記住:

      last = {c:i for i,c in enumerate(s)}

遍歷一遍之后,記錄了每個字符的最后出現的位置。

和跳躍位置2一樣,到達當前最遠了,就應該更新了。

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

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

相關文章

從齒輪到智能:機器人如何重塑我們的世界【科普類】

新晉碼農一枚&#xff0c;小編會定期整理一些寫的比較好的代碼和知識點&#xff0c;作為自己的學習筆記&#xff0c;試著做一下批注和補充&#xff0c;轉載或者參考他人文獻會標明出處&#xff0c;非商用&#xff0c;如有侵權會刪改&#xff01;歡迎大家斧正和討論&#xff01;…

python超市購物 2025年6月電子學會python編程等級考試一級真題答案解析

python超市購物 2025年6月 python編程等級考試一級真題 博主推薦 所有考級比賽學習相關資料合集【推薦收藏】 1、Python比賽 信息素養大賽Python編程挑戰賽 藍橋杯python選拔賽真題詳解

淺談代理流程自動化 (APA)

一、什么是APA Agentic Process Automation (APA)APA 利用大型語言模型 &#xff08;LLM&#xff09; 自動執行復雜的動態工作流程。它可以自主構建、執行和調整工作流程&#xff0c;同時將人員干預降至最低。與依賴基于規則的系統的傳統機器人流程自動化 &#xff08;RPA&…

LeetCode - 和為K的子數組 / 爬樓梯

?歡迎光臨小站&#xff1a;致橡樹 和為K的子數組 給你一個整數數組 nums 和一個整數 k &#xff0c;請你統計并返回 該數組中和為 k 的子數組的個數 。 子數組是數組中元素的連續非空序列。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,1], k 2 輸出&#xff1a;2示例…

day40 SQLite3單詞查詢程序設計與實現

day40 SQLite3單詞查詢程序設計與實現 核心知識點 SQLite3 C接口應用&#xff1a;使用sqlite3_open、sqlite3_exec等函數操作數據庫回調函數機制&#xff1a;通過回調函數處理查詢結果集SQL語句構建&#xff1a;動態生成SELECT、INSERT等SQL語句事務處理&#xff1a;使用BEGIN …

GitHub 熱榜項目 - 日榜(2025-09-08)

GitHub 熱榜項目 - 日榜(2025-09-08) 生成于&#xff1a;2025-09-08 統計摘要 共發現熱門項目&#xff1a;17 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現三大技術趨勢&#xff1a;AI智能體與LLM應用持續爆發&#xff08;emcie-co/parlant、coleam00…

設計模式-工廠方法原型模板方法外觀

設計模式概述 - 工廠方法 & 原型 & 模板方法 & 外觀 工廠方法模式簡述 工廠方法模式&#xff08;Factory Method Pattern&#xff09;是一種創建型設計模式&#xff0c;它定義了一個用于創建對象的接口&#xff0c;但由子類決定實例化哪個類。工廠方法將類的實例化…

推動檢測認證行業邁向智能化 AITIC一體機發布會在京舉辦

來源&#xff1a;新華社客戶端國家市場監督管理總局認證認可技術研究中心(簡稱“認研中心”)近日聯合技術合作伙伴在北京舉辦AITIC軟硬件一體機發布會。據了解&#xff0c;“AITIC一體機”是專為檢測認證行業設計的智能硬件&#xff0c;提供低成本的本地化部署方案&#xff0c;…

權限即數據:企業系統中的字段級訪問控制架構實戰(β=0.6)

摘要 這篇文章介紹了一個企業系統中的字段權限解析方案&#xff0c;通過規則表與命中記錄表&#xff08;biz_rule_hit&#xff09;聯動&#xff0c;實現對業務數據的動態權限控制。流程包括替換用戶上下文變量、記錄命中規則、查詢業務數據并關聯命中信息&#xff0c;最終在內存…

Python爬蟲實戰:研究Specialty Plots模塊,構建空氣質量監測數據采集和分析系統

1. 引言 1.1 研究背景 隨著全球城市化進程的加速和工業的快速發展,空氣質量問題已成為影響人類健康和生態環境的重要因素。世界衛生組織數據顯示,全球超過 90% 的人口生活在空氣質量超標的環境中,空氣污染每年導致約 700 萬人過早死亡。準確、及時地獲取和分析空氣質量數據…

字典樹算法

一、什么是Trie&#xff1f; Trie&#xff08;發音為"try"&#xff09;&#xff0c;也稱為字典樹、前綴樹&#xff0c;是一種多叉樹結構&#xff0c;專門用于高效存儲和檢索字符串集合。其核心特點是共享字符串的公共前綴&#xff0c;從而大幅減少冗余存儲&#xff0…

Laya使用VideoNode動態加載視頻,可以自定義播放視頻此處以及位置

export class VideoCommand {video: Laya.VideoNode;public duration: number 0;/*** param videoPos 視頻位置* param videoSize 視頻大小*/public constructor(videoPos: Laya.Vector2, videoSize: Laya.Vector2) {this.video new Laya.VideoNode;//添加到舞臺 1是場景中的…

yum localinstall安裝本地包

yum localinstall 是一個用于安裝本地 RPM 包并自動處理依賴關系的命令。當你有一個或多個本地的 RPM 包需要安裝,又希望 yum 能幫你解決可能存在的依賴問題時,這個命令就非常有用。下面我會詳細解釋它的用法和注意事項。 ??? 命令基本用法 yum localinstall 命令的基本…

LeetCode 面試經典 150 題:輪轉數組(三次翻轉法詳解 + 多解法對比)

在數組類算法題中&#xff0c;“輪轉數組” 是一道考察 “原地操作” 與 “邏輯轉換” 能力的經典題目。所謂 “輪轉”&#xff0c;是指將數組元素向右移動指定步數&#xff0c;且超出數組長度的元素需 “循環” 到數組開頭。這道題的最優解 ——三次翻轉法&#xff0c;能以 O …

網絡編程---TCP

1.TCP&#xff1a;傳輸控制協議&#xff0c;位于傳輸層2.TCP的特性&#xff1a;a.使用流式套接字&#xff0c;數據連續&#xff0c;有順序b.TCP是可靠傳輸&#xff0c;有有應答機制ACK&#xff0c;即收到數據后會明確告知發送方已收到數據&#xff1b;若發送方沒有在預計時間收…

對計算機網絡模型的理解

文章目錄 目錄 前言 一、Internet 的核心特點 二、Internet 的組成結構 1. 硬件基礎&#xff1a;網絡運行的 “物理載體” 2. 軟件支撐&#xff1a;網絡運行的 “功能橋梁” 3. 協議規則&#xff1a;網絡運行的 “通用語言” 三、OSI 七層參考模型&#xff08;理論標準&…

每日一算:分發糖果

在算法面試中&#xff0c;“分發糖果” 是一道經典的貪心算法應用題&#xff0c;核心考察對 “局部最優推導全局最優” 的理解。本文將從問題分析出發&#xff0c;提供兩種主流解題思路&#xff0c;并附上 C 實現代碼&#xff0c;幫助你徹底掌握這道題。一、問題重述題目要求有…

【WorkManager】無法在 Direct Boot 模式下初始化

【WorkManager】無法在 Direct Boot 模式下初始化一、問題描述二、問題分析2.1 關于 Direct Boot 模式2.2 支持 Direct Boot 模式2.3 手動初始化 WorkManager 組件2.4 WorkManager 不支持 Direct Boot 的官方修改三、解決方案一、問題描述 在使用 WorkManager 庫來實現開機上報…

Hybrid應用性能優化實戰分享(本文iOS 與 H5為例,安卓同理)

前言在移動應用開發中&#xff0c;Hybrid 架構因其跨平臺特性和開發效率優勢被廣泛采用。然而&#xff0c;WebView 的性能問題一直是開發者面臨的挑戰。本文將基于實際項目經驗&#xff0c;分享 iOS Hybrid 應用的核心優化策略&#xff0c;涵蓋 WebView 池化、預加載、用戶體驗…

點積、叉積、矩陣行列式詳解、線性相關與線性無關、矩陣的秩、矩陣可逆與不可逆詳解

1.向量 1.1 點積&#xff08;Dot Product&#xff09; 1.1.1 定義 點積是在求一個標量&#xff0c;點積結果沒有方向。 對于兩個向量u(u1,u2,u3),v(v1,v2,v3)\bold{u}(u_1,u_2,u_3),\bold{v}(v_1,v_2,v_3)u(u1?,u2?,u3?),v(v1?,v2?,v3?) 點積定義為&#xff1a;u?vu1v1u…