貪心+矩陣算法

貪心算法

貪心的本質是:選擇每一階段的局部最優,從而達到全局最優

做題的時候,只要想清楚 局部最優 是什么,如果推導出全局最優,其實就夠了。

買賣股票的最佳實際

思路:如果第i天賣出股票,則最大利潤為(該天的股價-前面天數中最小的股價),然后與已知的最大利潤比較,如果大于則更新當前最大利潤的值

class Solution {public int maxProfit(int[] prices) {// 初始化最大利潤為0,最低價格為第一個價格int maxProfit = 0;int minPrice = 100000;// 遍歷價格數組for (int price : prices) {// 更新最低價格minPrice = Math.min(minPrice, price);// 更新最大利潤maxProfit = Math.max(maxProfit, price - minPrice);}return maxProfit;}
}

跳躍游戲

class Solution {public boolean canJump(int[] nums) {int maxReach = 0; // 記錄能到達的最遠索引int n = nums.length;for (int i = 0; i < n; i++) {// 如果當前位置 i 已經超出最大可達范圍,則說明無法繼續前進if (i > maxReach) {return false;}// 更新最大可達范圍maxReach = Math.max(maxReach, i + nums[i]);// 如果最大可達范圍已經超過或等于最后一個索引,則返回 trueif (maxReach >= n - 1) {return true;}}return false;}
}

跳躍游戲Ⅱ

class Solution {public int jump(int[] nums) {int maxReach = 0;int current = 0;int jumps = 0;if( nums.length == 1) return 0;for(int i=0;i<nums.length-1;i++){maxReach=Math.max(i+nums[i],maxReach);if(i == current){jumps++;current = maxReach;if(current >= nums.length-1){return jumps;}}}return 0;}
}

劃分字母區間

class Solution {public List<Integer> partitionLabels(String S) {char[] s = S.toCharArray();int n = s.length;int[] last = new int[26];for (int i = 0; i < n; i++) {last[s[i] - 'a'] = i; // 每個字母最后出現的下標}List<Integer> ans = new ArrayList<>();int start = 0, end = 0;for (int i = 0; i < n; i++) {end = Math.max(end, last[s[i] - 'a']); // 更新當前區間右端點的最大值if (end == i) { // 當前區間合并完畢ans.add(end - start + 1); // 區間長度加入答案start = i + 1; // 下一個區間的左端點}}return ans;}
}

矩陣

數組中第K個最大元素

class Solution {public int findKthLargest(int[] nums, int k) {int[] buckets = new int[20001];int n = nums.length;for(int i =0;i<n;i++){buckets[nums[i]+10000]++;}for(int i = 20000;i>=0;i--){k = k - buckets[i];if(k <= 0){return i-10000;}}return 0;}
}

有效括號

class Solution {public boolean isValid(String s) {//特殊情況if(s.isEmpty()){return true;}//創建棧,字符類型Stack<Character> stack = new Stack<Character>();for(char c:s.toCharArray()){if(c == '('){stack.push(')');}else if(c == '{'){stack.push('}');}else if(c=='['){stack.push(']');}// 要先判斷是否為空,再判斷出棧else if(stack.empty() || c!=stack.pop()){return false;}}if(stack.empty()){return true;}return false;}
}

每日溫度

class Solution {public int[] dailyTemperatures(int[] temperatures) {int n = temperatures.length;int[] result = new int[n];Stack<Integer> stack = new Stack<>(); // 單調遞減棧,存索引for (int i = 0; i < n; i++) {// 如果當前溫度比棧頂索引的溫度高,則計算等待天數while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {int prevIndex = stack.pop();result[prevIndex] = i - prevIndex;}// 當前索引入棧stack.push(i);}return result;}
}

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

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

相關文章

STM32U5 周期性異常復位問題分析

關鍵字&#xff1a; Option Bytes, IDWG 1. 問題背景 客戶反饋使用 NUCLEO_STM32U575 進行評估時&#xff0c;發現板子燒錄完程序后&#xff0c;能看到指示程序運行的 LED 燈正常點亮&#xff0c;但是程序跑不起來。仔細觀察 LED 指示燈&#xff0c;并不是常亮而是出現周期性…

RedisBloom使用

安裝RedisBloom模塊&#xff0c;從git獲取對應的原碼&#xff0c;make生成.so文件&#xff0c;掛載.so文件&#xff0c;啟動redis docker run --name test-redis -v /iothub/test-redis/data:/data -v /iothub/test-redis/modules:/modules -p 6378:6379 -d redis:4.0.10 redis…

ADC、Flash、SPI、watchdog

ADCADC(Analog-to-Digital Converter), 即模擬信號 - 數字信號轉換器在STM32F103C8T6中, 同樣具有ADC功能.以我們的芯片為例, 也存在2個片上外設ADC, 即ADC1和ADC2, 這兩個ADC片上外設都掛載在APB2總線上.我們的ADC片上外設, 是一種具有12位逐次逼近型ADC,ADC轉換的本質是不斷的…

冷庫設備遠程監控物聯網+省電節能解決方案

隨著生鮮電商、醫藥冷鏈、跨境物流等行業的爆發式增長&#xff0c;我國冷庫容量激增&#xff0c;但傳統冷庫管理模式正面臨嚴峻挑戰。據統計&#xff0c;國內冷鏈運輸損耗率高達12%-15%&#xff0c;其中因溫度失控導致的貨損占比超60%。在某醫藥企業冷庫事故中&#xff0c;因制…

如何開發一個運行在windows系統服務器上的服務

第一步&#xff1a;vs2022創建一個windows服務項目第二步&#xff1a;從工具箱拖拽出一個timer第三步&#xff1a;按下圖所示進入&#xff0c;開始編輯業務邏輯下面給個例子using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; …

本地組策略編輯器無法打開(gpedit.msc命令異常)

一、本地組策略編輯器打開方式1、直接搜索打開&#xff08;1&#xff09;在搜索欄中直接輸入以下內容進行搜索本地組策略編輯器&#xff08;2&#xff09;搜索到后直接點擊打開即可&#xff08;但是一部分同志無法搜索到&#xff0c;搜索到的內容基本都是網頁信息而非本地系統的…

kafka部署集群模式

Kafka部署&#xff08;3.7&#xff09; 生產環境推薦的kafka部署方式為operator方式部署&#xff0c;Strimzi是目前最主流的operator方案。集群數據量較小的話&#xff0c;可以采用NFS共享存儲&#xff0c;數據量較大的話可使用local pv存儲 部署operator operator部署方式為he…

C語言中級_動態內存分配、指針和常量、各種指針類型、指針和數組、函數指針

0、前言&#xff1a; 動態內存分配是一個重要概念&#xff0c;要和靜態數組對比著學習&#xff1b;指針和數組搭配在一起&#xff0c;讓指針理解的難度上了一個臺階&#xff0c;尤其是二維數組搭配指針&#xff0c;要獲取數組的值&#xff0c;什么時候“取地址”&#xff0c;什…

單變量單步時序預測:CNN-GRU卷積神經網絡結合門控循環單元

目錄預測效果1. **CNN-GRU的基本原理**2. **應用場景**3. **模型結構與實現**4. **優勢與挑戰**5. **相關研究與實現**6. **未來發展方向**結論代碼設計預測效果 CNN-GRU卷積神經網絡結合門控循環單元是一種結合了卷積神經網絡&#xff08;CNN&#xff09;和門控循環單元&#…

MonoFusion 與 Genie 3

卡內基梅隆大學的研究者發明了一種叫 MonoFusion 的新技術&#xff0c;它能用很少的普通相機&#xff08;比如4個&#xff09;&#xff0c;就能拍出像電影特效一樣細膩流暢的動態3D場景&#xff08;4D重建&#xff09;&#xff0c;比如彈鋼琴、修自行車這種復雜動作&#xff0c…

kubernets命令行創建Token并附加權限給dashboard控制臺登錄

1、創建登錄token kubectl create token default -n graph-node-test dgjeojrgopejgeropjgpsdjgerjglsdjfsjogjeojgeorjgortlfhj4yu493460uwperg3wef;lsj2y3r934tnrhifrlfe9t4h5tlhobdrmlgw485tw4yp653ut9ogogjerolj4w9erjgotj3fgjletyj49yr20o359truyo5u6908430jt5grjsdtgj49…

什么是SpringBoot

題目詳細答案Spring Boot 是由 Pivotal 團隊提供的一個基于 Spring 框架的項目&#xff0c;它旨在簡化 Spring 應用的開發和部署。Spring Boot 通過提供一系列的約定和開箱即用的功能&#xff0c;使得開發者可以更快地構建獨立的、生產級的 Spring 應用程序&#xff0c;而無需進…

從零開始設計一個分布式KV存儲:基于Raft的協程化實現

從零開始設計一個分布式KV存儲&#xff1a;基于Raft的協程化實現 本文將以一個最小可運行的分布式KV系統為例&#xff0c;帶你拆解如何用C、Raft算法和協程模型構建高可用的Key-Value存儲。 一、為什么需要分布式KV&#xff1f; 單機KV&#xff08;如Redis&#xff09;存在單點…

虛擬機或docker的ubuntu無界面安裝完成后鏡像源設置

ubuntu系統源 在裝好虛擬機或者docker鏡像后&#xff0c;直接使用apt update && apt upgrade是無法完更新的。 此時系統中也沒有vim工具&#xff0c;我們可以在清華源的網站中找到幫助文檔。mirrors.tuna.tsinghua.edu.cn/help/ubuntu/為了避免沖突&#xff0c;我們使用…

串口通信02 溫度傳感DS18B20 01 day49

九&#xff1a;串口通信 通信&#xff1a;無線和有線 ? 單工 半雙工 全雙工 并行&#xff1a;多個數據線 串行&#xff1a;一根數據線 同步&#xff1a;通信雙方使用同一個時鐘&#xff0c;SPI信息幀&#xff0c;有CLK引腳 異步&#xff1a;通信雙方使用不同時鐘&#xff0c;雙…

【FreeRTOS 】任務通知

FreeRTOS 任務通知任務通知簡介一 、發送通知1.1 xTaskNotify()1.2 xTaskNotifyFromISR()1.3 xTaskNotifyGive()1.4 xTaskNotifyAndQuery()1.5 xTaskNotifyAndQueryFromISR()二、接收通知2.1 ulTaskNotifyTake()2.2 xTaskNotifyWait()三、清除通知狀態和值3.1 xTaskNotifyState…

Android視圖狀態以及重繪

一、視圖狀態&#xff08;View States&#xff09;1. 五種核心狀態狀態作用修改方法特點enabled視圖是否響應交互setEnabled(boolean)禁用狀態下不響應onTouch事件focused視圖是否獲得焦點requestFocus()需同時滿足focusable和focusableInTouchModewindow_focused視圖所在窗口是…

vue3接收SSE流數據進行實時渲染日志

后端使用的是 Spring Boot WebFlux&#xff08;響應式編程框架&#xff09;&#xff0c;并且返回的是 Server-Sent Events (SSE) 流式數據&#xff0c;那么在 Vue3 中&#xff0c;需要使用 EventSource API 或 fetch 流式讀取 來正確獲取響應內容。方案 1&#xff1a;使用 Eve…

每日五個pyecharts可視化圖表-bars(6)

探索pyecharts庫中條形圖的高級用法與定制技巧 在數據可視化中&#xff0c;條形圖是最常用的圖表類型之一&#xff0c;它能夠清晰地展示不同類別之間的數量對比。今天&#xff0c;我們將繼續學習如何使用pyecharts創建5種不同風格的條形圖。pyecahts源碼 圖表1&#xff1a;帶…

【C語言】文件操作全解析

文章目錄一、為什么需要文件操作&#xff1f;二、認識文件&#xff1a;不止是磁盤上的存儲2.1 程序文件2.2 數據文件2.3 文件名的構成三、文本文件與二進制文件&#xff1a;數據的兩種形態3.1 存儲方式差異3.2 實例對比&#xff1a;整數10000的存儲3.3 二進制文件操作示例四、文…