【代碼隨想錄_Day23】122. 買賣股票的最佳時機 II 55. 跳躍游戲 45.跳躍游戲II 1005.K次取反后最大化的數組和

Day23 OK,今日份的打卡!第二十三天

  • 以下是今日份的總結
    • 買賣股票的最佳時機 II
    • 跳躍游戲
    • 跳躍游戲II
    • K次取反后最大化的數組和

以下是今日份的總結

122 買賣股票的最佳時機 II
55 跳躍游戲
45 跳躍游戲II
1005 K次取反后最大化的數組和

今天的題目難度不低,盡量還是寫一些簡潔代碼 ^?_?^

買賣股票的最佳時機 II

思路:

算出每一天的差值,然后計算所有正值的和,不計算虧損

值得注意的是

局部最優:收集每天的正利潤
全局最優:求得最大利潤。

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

跳躍游戲

思路:

局部最優解:每次取最大跳躍步數(取最大覆蓋范圍)
整體最優解:最后得到整體最大覆蓋范圍,看是否能到終點。

值得注意的是

因為元素值是最大跳躍步數,所以可以在范圍內跳任意步數

       bool canJump(vector<int>& nums) {int cover = 0;if (nums.size() == 1)return true; // 只有一個元素,就是能達到for (int i = 0; i <= cover; i++) { // 注意這里是小于等于covercover = max(i + nums[i], cover);if (cover >= nums.size() - 1)return true; // 說明可以覆蓋到終點了}return false;}

跳躍游戲II

思路:

從覆蓋范圍出發,不管怎么跳,覆蓋范圍內一定是可以跳到的,以最小的步數增加覆蓋范圍,覆蓋范圍一旦覆蓋了終點,得到的就是最少步數

值得注意的是

需要統計兩個覆蓋范圍,當前這一步的最大覆蓋和下一步最大覆蓋

    int jump(vector<int>& nums) {int curDistance = 0;  // 當前覆蓋的最遠距離下標int ans = 0;          // 記錄走的最大步數int nextDistance = 0; // 下一步覆蓋的最遠距離下標for (int i = 0; i < nums.size() - 1;i++) { // 注意這里是小于nums.size() - 1,這是關鍵所在nextDistance =max(nums[i] + i, nextDistance); // 更新下一步覆蓋的最遠距離下標if (i == curDistance) { // 遇到當前覆蓋的最遠距離下標curDistance = nextDistance; // 更新當前覆蓋的最遠距離下標ans++;if (nextDistance >= nums.size() - 1)break; // 當前覆蓋最遠距到達集合終點,不用做ans++操作了,直接結束}}return ans;}

K次取反后最大化的數組和

思路:

第一步:將數組按照絕對值大小從小到大排序,注意要按照絕對值的大小
第二步:從前向后遍歷,遇到負數將其變為正數,同時K–
第三步:如果K還大于0,那么反復轉變數值最小的元素,將K用完
第四步:求和

值得注意的是

貪心第一次
局部最優:讓絕對值大的負數變為正數,當前數值達到最大
整體最優:整個數組和達到最大。
再貪一次
局部最優:只找數值最小的正整數進行反轉,當前數值和可以達到最大
全局最優:整個 數組和 達到最大。

    int largestSumAfterKNegations(vector<int>& nums, int k) {int res = 0;//排序,假設將最小的負數放在數組最前面sort(nums.begin(), nums.end());for (int i = 0; i < nums.size(); i++) {//盡可能的處理數組中的負數if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}}//全是正數,在此調整排序,k有余是單數,則將開頭的數字負數化        if (k % 2 != 0) {sort(nums.begin(), nums.end());nums[0] = -nums[0];}for (int i : nums) {res += i;}return res;}

兩次排序太羅嗦了,優化一下

   static bool cmp(int a, int b) { return abs(a) < abs(b); }int largestSumAfterKNegations(vector<int>& nums, int k) {int res = 0;//按絕對值排序,解決兩次排序的問題sort(nums.begin(), nums.end(), cmp);for (int i = nums.size() - 1; i >= 0; i--) {if (nums[i] < 0 && k > 0) {nums[i] = -nums[i];k--;}}if (k % 2 == 1) {nums[0] = -nums[0];//最小值取負}for (int i : nums) {res += i;}return res;}

寫在最后

----OK,今日份的博客就寫到這里,這一期的貪心算法好難想,明天繼續加油!!!
—還沒看下期的題,但是我的棧還有一節沒寫;
–追上時間進度了嗎?如追,從欠兩天變成欠一天!!(笑
-月亮在走,太陽在跑,時間在睡覺,機會不會等我。

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

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

相關文章

MySQL實戰-4 | 深入淺出索引(上)(下)

什么是數據庫索引&#xff0c;索引又是如何工作的呢&#xff1f; 一句話簡單來說&#xff0c;索引的出現其實就是為了提高數據查詢的效率&#xff0c;就像書的目錄一樣。一本 500 頁的書&#xff0c;如果你想快速找到其中的某一個知識點&#xff0c;在不借助目錄的情況下&…

【AI工具】-GPU算力租賃平臺介紹

目錄 1. AWS&#xff08;亞馬遜云服務&#xff09; 2. Google Cloud Platform (GCP) 3. Microsoft Azure 4. 阿里云 5. 騰訊云 6. 派歐算力云&#xff08;PPIO&#xff09; 7. Lambda Labs 8. 猿界算力 9. AutoDL算力云&#xff08;視拓云&#xff09; 10. 極鏈AI云 …

試用筆記之-免費的匯通餐飲管理軟件

首先下載免費的匯通餐飲管理軟件&#xff1a; http://www.htsoft.com.cn/download/htcanyin.exe 安裝后的圖標 登錄軟件&#xff0c;默認沒有密碼 匯通餐飲管理軟件主界面 匯通餐飲軟件前臺系統 點菜

使用 Java Swing 和 XChart 創建多種圖表

在現代應用程序開發中&#xff0c;數據可視化是一個關鍵部分。本文將介紹如何使用 Java Swing 和 XChart 庫創建各種類型的圖表。XChart 是一個輕量級的圖表庫&#xff0c;支持多種類型的圖表&#xff0c;非常適合在 Java 應用中進行快速的圖表繪制。 1、環境配置 在開始之前&…

關于正負樣本不均衡對樹模型feature importance的影響

正負樣本不平衡確實可能會影響決策樹模型&#xff08;包括隨機森林和梯度提升樹等樹模型&#xff09;中的特征重要性評估。這是因為特征重要性的計算通常基于模型內部節點分裂所帶來的信息增益或基尼不純度減少。 在不平衡的數據集中&#xff0c;模型可能會偏向于頻繁選擇那些…

PSINS中,avp的解讀

PSINS中的AVP PSINS工具箱里面的trj.avp、trj.avp0等中的avp指的是姿態&#xff08;attitude&#xff09;、速度&#xff08;velocity&#xff09;和位置&#xff08;position&#xff09;&#xff0c;最后加一個時間戳t&#xff1a; avp[att; vn; pos; t]。 姿態 姿態的構成…

imx6ull/linux應用編程學習(7)在LCD上顯示文字

在linux中&#xff0c;確實可以像裸機一樣自己取模、自己寫函數打點顯示&#xff0c;但是效率很低&#xff0c;不能滿足多文字顯示&#xff0c;在Linux 系統中&#xff0c; 字體文件通常會放在/usr/share/fonts 目錄下&#xff0c;有了字體文件之后&#xff0c;我們就不需要再對…

X86 +PC104+支持WinCE5.0,WinCE6.0,DOS,WinXP, QNX等操作系統,工業控制數據采集核心模塊板卡定制

CPU 模塊 是一款基于RDC 3306的SOM Express模塊。RDC 3306這款X86架構的CPU是一款性能高、穩定性強的處理器。 它是一款靈活精巧的主板&#xff08;尺寸為91.8mm68.6mm&#xff09;&#xff0c;可以靈活的運用于用戶的底板&#xff0c;節約開發成本。模塊的接插件使用插針形式…

人工智能在音樂創作中的雙刃劍:創新與挑戰

AI在創造還是毀掉音樂&#xff1f; 簡介 最近一個月&#xff0c;輪番上線的音樂大模型&#xff0c;一舉將素人生產音樂的門檻降到了最低&#xff0c;并掀起了音樂圈會不會被AI徹底顛覆的討論。短暫的興奮后&#xff0c;AI產品的版權歸屬于誰&#xff0c;創意產業要如何在AI的陰…

pom文件-微服務項目結構

一、微服務項目結構 my-microservices-project/ ├── pom.xml <!-- 父模塊的pom.xml --> ├── ry-system/ │ ├── pom.xml <!-- 子模塊ry-system的pom.xml --> │ └── src/main/java/com/example/rysystem/ │ └── RySystemApplication.…

數據類型

數據類型 注意&#xff1a;每個字段都必須設置數據類型 整數類型 tinyint - 1字節 - 應用場景&#xff1a;存儲狀態碼 int - 4字節 - 應用場景&#xff1a;沒有特殊要求&#xff0c;一般使用int bigint - 8字節 - 應用場景&#xff1a;存儲極大的整數 CREATE TABLE user (use…

Elasticsearch8.x Spring Data and Spring Boot 3 嘗鮮

在本教程中,我們將通過實際操作和實用的方式,探索使用 Spring Boot 進行 Elasticsearch 的基礎知識。我們將學習如何使用 Spring Data Elasticsearch 模塊創建索引、進行 CRUD 操作、搜索和查詢 Elasticsearch 文檔。我們還將看看如何在我們的 Spring 應用程序中記錄 Elastic…

全網最全的TTS模型匯總,電商人、自媒體人狂喜

近日TTS語音模型在AI圈內熱度不小&#xff0c;今天小編就來給大家做了個TTS模型匯總&#xff01; GPT-SoVITS&#xff08;AI 賣貨主播大模型Streamer-Sales銷冠用的TTS模型&#xff09; 模型簡介&#xff1a;支持英語、日語和中文&#xff0c;零樣本文本到語音&#xff08;TT…

【INTEL(ALTERA)】Nios II軟件開發人員手冊中設計位置的錯誤示例

目錄 說明 解決方法 說明 Nios II軟件開發人員手冊正確無誤 請參閱 Nios 中包含的Nios II硬件設計示例 II 嵌入式設計套件 &#xff08;EDS&#xff09;。提供設計示例 設計上 Altera網站的示例頁面。 Nios II軟件開發人員手冊正確無誤 請參閱 創建本應用程序和創建本 bsp …

Python UUID模塊:深入理解與使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

Atom CMS v2.0 SQL 注入漏洞(CVE-2022-25488)

前言 CVE-2022-25488 是一個發現于 Telesquare SDT-CW3B1 設備中的命令注入漏洞。這一漏洞可以被未經認證的遠程攻擊者利用&#xff0c;通過特殊構造的 HTTP 請求在設備上執行任意命令。以下是關于該漏洞的詳細信息&#xff1a; 漏洞詳細信息 漏洞編號: CVE-2022-25488影響范…

沃爾核材:價值重估

當英偉達這個曾經的GPU行業龍頭&#xff0c;伴隨AI的發展成為AI芯片架構的供應商時&#xff0c;他就跳出了原本行業的競爭格局&#xff0c;曾經還能與之一戰的超威半導體被遠遠甩在身后&#xff0c;成為宇宙第一公司。 這說的就是一家公司價值的重估。今天給大家聊的也是這樣一…

LIMS系統在汽車行業中的應用有哪些優勢

LIMS實驗室管理系統在汽車行業中的應用有諸多優勢&#xff0c;這些優勢不僅提升了實驗室的管理效率&#xff0c;還確保了數據的準確性和可靠性&#xff0c;進而促進了汽車行業的整體發展。 一、提升管理效率 自動化數據處理 LIMS系統能夠自動化處理大量數據&#xff0c;顯著減…

Python層次密度聚類算法庫之HDBSCAN使用詳解

概要 HDBSCAN 是一種層次密度聚類算法,它通過密度連接性來構建聚類層次結構。與傳統的 K-Means 算法相比,HDBSCAN 具有以下幾個顯著特點: 自動確定聚類數量:HDBSCAN 能夠根據數據自動確定聚類數量,不需要預先指定。 適應噪聲和異常點:HDBSCAN 在聚類過程中能夠很好地處理…