代碼隨想錄算法訓練營 Day32 | LeetCode122.買賣股票的最佳時機II、LeetCode55. 跳躍游戲、LeetCode45.跳躍游戲II

LeetCode122.買賣股票的最佳時機II

那么這里面根據貪心思想:
1、在最低點時買入,如果該點比上一點價格更低,只有兩種情況:上一點為買入點,則此時更新買入點;上一點不是買入點,則此時將股票賣出,并更新買入點
2、在最高點賣出,如果該點比上一點價格更高,則繼續向后觀望,直到最高的點。
3、首尾處的結果,避免價格一直是單調序列,因此在結尾處再添加一個賣出的操作。

代碼如下:

class Solution {
public:int maxProfit(vector<int>& prices) {int sum = 0;int i = 0;int buy = 0;while(i<prices.size()){if(i>0 && (prices[i]<prices[i-1] || prices[i]<prices[buy])){sum += prices[i-1]-prices[buy];buy = i;}i++;}sum += prices[prices.size()-1]-prices[buy];return sum;}
};

但是卡哥代碼的思想比上述巧妙多了,計算出每兩天之間的利潤,只取正數利潤相加即可求得最終結果,代碼如下:

class Solution {
public:int maxProfit(vector<int>& prices) {int result = 0;for (int i = 1; i < prices.size(); i++) {result += max(prices[i] - prices[i - 1], 0);}return result;}
};

LeetCode55. 跳躍游戲

本題關鍵的思路在于覆蓋,只要取到任何一個點他下一步能覆蓋到終點時就可以。

有一個錯誤點在于for循環時終止條件不應該是nums.size(),而是cover,這樣就可以解決[1,0,...]的情況,并且cover是需要一直更新的。

代碼如下:

class Solution {
public:bool canJump(vector<int>& nums) {if(nums.size()==1) return true;int cover = 0;for(int i=0;i<=cover;i++){cover = max(i+nums[i],cover);if(cover>=nums.size()-1) return true;}return false;}
};

LeetCode45.跳躍游戲II

思路確實不太好想,貪心的策略就是盡量每一步走到最遠處,那么如何判斷下一步的最遠處呢?那么這里就需要一直遍歷到當前步的最遠處,來不斷更新下一步的最遠處,并且步數+1,就跳到下一步的循環當中,當下一步的最遠處涵蓋了終點時,則就可以返回。

代碼如下:

class Solution {
public:int jump(vector<int>& nums) {if(nums.size()==1) return 0;int curCover = 0;int nextCover = 0;int result = 0;for(int i=0;i<nums.size();i++){nextCover = max(i+nums[i],nextCover);if(i==curCover){result++;if(nextCover>=nums.size()-1) return result;curCover = nextCover;}}return result;}
};

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

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

相關文章

物聯網的核心技術有哪些?

物聯網的核心技術有哪些? 說起物聯網的相關技術&#xff0c;涉及到很多&#xff0c;比如自動識別技術、傳感器技術、網絡通信技術、云計算等&#xff0c;但說到核心技術&#xff0c;我認為有以下6個。這6個核心技術分別是感知和識別技術、物聯網設備硬件、通信技術、數據處理技…

【MySQL】數據庫中常用的函數

目錄 聚合函數COUNT()函數的多種用法COUNT(*)COUNT(主鍵)COUNT(1)COUNT(常量)COUNT(非主鍵)COUNT(distinct(字段)) COUNT()函數小結 字符函數length(str)函數&#xff1a;獲取參數值的字節個數concat(str1,str2,...)函數&#xff1a;字符串拼接upper(str)、lower(str)函數:大小…

Linux高負載排查最佳實踐

在Linux系統中&#xff0c;經常會因為負載過高導致各種性能問題。那么如何進行排查&#xff0c;其實是有跡可循&#xff0c;而且模式固定。 本次就來分享一下&#xff0c;CPU占用過高、磁盤IO占用過高的排查方法。 還是那句話&#xff0c;以最佳實踐入手&#xff0c;真傳一句話…

1 開源鴻蒙OpenHarmony niobe407 STM32F407IGT6芯片輕型系統全量源碼4.1版本下載流程

開源鴻蒙OpenHarmony niobe407 STM32F407IGT6芯片輕型系統全量源碼4.1版本下載流程 作者將狼才鯨日期2024-02-27 一、前景提要 如果通過DevEco Marketplace網站獲取下載源碼的話&#xff0c;不全&#xff0c;有些板子下不到&#xff1b;OpenHarmony開發板列表&#xff0c;官方…

數據庫-第二/三章 關系數據庫和標準語言SQL【期末復習|考研復習】

前言 總結整理不易&#xff0c;希望大家點贊收藏。 給大家整理了一下計數據庫系統概論中的重點概念&#xff0c;以供大家期末復習和考研復習的時候使用。 參考資料是王珊老師和薩師煊老師的數據庫系統概論(第五版)。 文章目錄 前言第二、三章 關系數據庫和標準語言SQL2.1 關系2…

JVM原理-基礎篇

Java虛擬機&#xff08;JVM, Java Virtual Machine&#xff09;是運行Java應用程序的核心組件&#xff0c;它是一個抽象化的計算機系統模型&#xff0c;為Java字節碼提供運行環境。JVM的主要功能包括&#xff1a;類加載機制、內存管理、垃圾回收、指令解釋與執行、異常處理與安…

React react.fragment和<>的使用及區別

React一個常用的模式是組件返回多個元素。Fragment可以為你的子元素分組而不需要在DOM上為它們添加額外的節點。 Fragment 使用 render() {return (<React.Fragment> <ChildA /> <ChildB /> <ChildC /> </React.Fragment> );}短語法使用 這里…

虛擬機內存不夠用了?全流程操作Look一下?

虛擬機信息&#xff1a;操作系統&#xff1a;CentOS Linux 7 (Core)&#xff0c;用的是VMware Workstation 16 Pro 版本16.2.3 build-19376536&#xff1b;我的主機 Windows 10 Education, 64-bit (Build 22000.1817) 10.0.22000 前言&#xff1a;虛擬機用久了就會出現內存不足…

代碼隨想錄算法訓練營Day37|738.單調遞增的數字、968.監控二叉樹

738.單調遞增的數字 題目鏈接&#xff1a;738.單調遞增的數字 文檔鏈接&#xff1a;738.單調遞增的數字 視頻鏈接&#xff1a;貪心算法&#xff0c;思路不難想&#xff0c;但代碼不好寫&#xff01;LeetCode:738.單調自增的數字 C實現 class Solution { public:int monotoneIn…

Rocky Linux 安裝部署 Zabbix 6.4

一、Zabbix的簡介 Zabbix是一種開源的企業級監控解決方案&#xff0c;用于實時監測服務器、網絡設備和應用程序的性能和可用性。它提供了強大的數據收集、處理和可視化功能&#xff0c;同時支持事件觸發、報警通知和自動化任務等功能。Zabbix易于安裝和配置&#xff0c;支持跨平…

6、Redis-KV設計、全局命令和安全性

目錄 一、value設計 二、Key設計 三、全局命令——針對所有key 四、安全性 一、value設計 ①是否需要排序&#xff1f;需要&#xff1a;Zset ②需要緩存的數據是單個值還是多個值&#xff1f; 單個值&#xff1a;簡單值---String&#xff1b;對象值---Hash多個值&#x…

【前端素材】推薦優質后臺管理系統網頁Hyper平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理和控制網站、應用程序或系統的管理界面。它通常被設計用來讓網站或應用程序的管理員或運營人員管理內容、用戶、數據以及其他相關功能。后臺管理系統是一種用于管理網站、應用程序或系統的工具&#xff0c;通常由管理員使…

【AIGC】OpenAI推出王炸級模型sora,顛覆AI視頻行業(2024)

對于OpenAI推出的Sora模型&#xff0c;我們可以進一步探討其可能的技術細節、潛在應用以及對AI視頻行業的影響。 點擊以下任一云產品鏈接&#xff0c;跳轉后登錄&#xff0c;自動享有所有云產品優惠權益&#xff1a; 經過筆者親測&#xff0c;強烈推薦騰訊云輕量應用服務器作…

【分類討論】【割點】1568. 使陸地分離的最少天數

作者推薦 動態規劃的時間復雜度優化 本文涉及知識點 分類討論 割點 LeetCode1568. 使陸地分離的最少天數 給你一個大小為 m x n &#xff0c;由若干 0 和 1 組成的二維網格 grid &#xff0c;其中 1 表示陸地&#xff0c; 0 表示水。島嶼 由水平方向或豎直方向上相鄰的 1 …

接口詳細說明

接口概述 接口也是一種規范 接口的定義與特點 接口的格式如下&#xff1a; //接口用關鍵字interface來定義 public interface 接口名 {// 常量// 抽象方法 } JDK8之前接口中只能是抽象方法和常量&#xff0c;沒有其他成分了。 接口不能實例化。 接口中的成員都是public修…

webpack打包一個文件,做了哪些事情

用webpack打包一個文件&#xff0c;在webpack內部做了哪些事情&#xff0c;用代碼詳細介紹一下 當你使用 Webpack 打包一個文件時&#xff0c;Webpack 內部會進行一系列操作來實現模塊加載、代碼轉換、依賴分析、模塊打包等功能。以下是使用 Webpack 打包一個簡單 JavaScript …

svn介紹 4.0

一、svn介紹&#xff08;版本控制工具&#xff09; 1、svn的定義&#xff1a; svn是一個開放源代碼的版本控制系統&#xff0c;通過采用分支管理系統的高效管理&#xff0c;簡而言之就是用于多個人共同開發同一個項目&#xff0c;實現共享資源&#xff0c;實現最終集中式個管…

電腦數據丟失是什么原因 易我數據恢復軟件下載 easyrecovery數據恢復軟件下載 電腦數據刪除了怎么恢復 電腦數據庫損壞了怎么找回

目錄 一、電腦數據丟失是什么原因 二、電腦數據丟失如何恢復 三、EasyRecovery恢復電腦數據的方法介紹 電腦是我們大家熟悉并且常用的數據存儲設備&#xff0c;也是綜合性非常強的數據處理設備。對于電腦設備來講&#xff0c;最主要的數據存儲介質是硬盤&#xff0c;電腦硬…

CMU15445實驗總結(Spring 2023)

CMU15445實驗總結(Spring 2023) 背景 菜鳥博主是2024屆畢業生&#xff0c;學歷背景太差&#xff0c;導致23年秋招無果&#xff0c;準備奮戰春招。此前有讀過LevelDB源碼的經歷&#xff0c;對數據庫的了解也僅限于LevelDB。奔著”有對比才能學的深“的理念&#xff0c;以及緩解…

linux系統Jenkins工具配置webhook自動部署

Jenkins工具webhook自動部署 webhook自動部署webhook的意義操作流程jenkins頁面操作gitlab頁面操作 webhook自動部署 webhook的意義 自動化部署&#xff1a;Webhook 可以在代碼提交、合并請求或其他特定事件發生時自動觸發 Jenkins 構建和部署任務&#xff0c;從而實現自動化…