算法訓練營第三十六天 | LeetCode 1005 K次取反后最大化的數組、LeetCode 134 加油站

LeetCode 1005 K次組飯后最大化的數組

這題貪的主要是數值最大化。如果K > 負數個數,我們就先將負數全部轉換成它的相反數,并將K--,之后K剩余的值可以對2取模,為0的話直接得出最后結果,為的話我們要在當前所有值里取最小值,對其進行取反。如果K <= 負數個數,K用完直接結束,將數組累加即可。

代碼如下:

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);int sum = 0;for (int i = 0; i < nums.length; i++) {if (k == 0) break;if (nums[i] < 0) {k--;nums[i] *= -1;} else break;}if (k > 0 && k % 2 == 1) {Arrays.sort(nums);nums[0] *= -1;}for (int i = 0; i < nums.length; i++) {sum += nums[i];}return sum;}
}

LeetCode 134 加油站

兄弟們,這題我老一時隔一天,終于寫出來了!其實也不是很難,就是一個比較復雜的模擬。但是里面用貪心縮短了循環次數,這就造成我們的麻煩了。

主要思路是用一個cnt模擬每次的起點,在循環內部用一個i變量模擬走過的加油站數,這里面涉及到i到達右邊界后要回到1的問題。比較麻煩的是在剛開始起步時需要先走一步,便于二重循環的判斷條件能夠正常運轉,不然i和cnt開始時處于同一位置無法判斷是已經走一圈了還是剛開始的狀態,這個后面需要優化下不然面試時也無法立刻就寫出來。

同時這里面還用到一個特別的規律:如果從某個加油站起步沒能到達的第一個加油站是a,那么從該起始加油站到a中間的任何一個加油站,都無法到達a,所以遇到無法到達的第一個加油站時,直接將cnt移到i + 1退出循環即可。需要注意判別cnt比i+1大的情況,這是為了防止多次遍歷造成死循環的出現。

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int cnt = 0;int gasNum = 0;while (cnt < gas.length) {gasNum += (gas[cnt] - cost[cnt]);if (gasNum < 0)  {cnt = cnt + 1;gasNum = 0;continue;}int i = cnt + 1;if (i == gas.length) i = 0;while (i != cnt) {if (gasNum + gas[i] - cost[i] >= 0) {gasNum += (gas[i] - cost[i]);i++;} else if (cnt < i + 1) {gasNum = 0;cnt = i + 1;break;} else {cnt = gas.length;break;}if (i == gas.length) i = 0;}if (i == cnt) return cnt;}   return -1;}
}

LeetCode 135 分發糖果

這題要貪心兩次,一次從前往后遍歷,如果右孩子比左孩子大并且他的評分比左孩子小或者相等,那么他的評分賦為左孩子評分+1

第二次從后往前遍歷,如果左孩子比右孩子大并且他的評分比右孩子小或者相等,那么他的評分等于右孩子評分+1

兩次分別取反向遍歷的原因是有遞推關系存在,前序遍歷可以處理這樣的情況:假如左邊增加了,右邊也要跟著增長,適用于右邊大于左邊的情況;后序遍歷可以處理這樣的情況:假如右邊增長了,左邊也要跟著增長,適用于左邊大于右邊的情況

這題需要再看下,不知道解法恐怕挺難寫得出來

代碼如下:

class Solution {public int candy(int[] ratings) {int[] num = new int[ratings.length];for (int i = 0; i < num.length; i++) {num[i] = 1;}for (int i = 0; i < ratings.length - 1; i++) {if (ratings[i] < ratings[i + 1] && num[i + 1] <= num[i]) num[i + 1] = num[i] + 1;}for (int i = ratings.length - 1; i > 0; i--) {if (ratings[i - 1] > ratings[i] && num[i - 1] <= num[i]) num[i - 1] = num[i] + 1;}int sum = 0;for (int i = 0; i < num.length; i++) sum+= num[i];return sum;}
}

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

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

相關文章

Python | Leetcode Python題解之第108題將有序數組轉換為二叉搜索樹

題目&#xff1a; 題解&#xff1a; class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 選擇任意一個中間位置數字作為根節點mid (left right randint(0, 1)) // 2root TreeNode(nums…

純血鴻蒙APP實戰開發——邊緩存邊播放案例

介紹 OhosVideoCache是一個支持邊播放邊緩存的庫&#xff0c;只需要將音視頻的url傳遞給OhosVideoCache處理之后再設置給播放器&#xff0c; OhosVideoCache就可以一邊下載音視頻數據并保存在本地&#xff0c;一邊讀取本地緩存返回給播放器&#xff0c;使用者無需進行其他操作…

NDIS小端口驅動(五)

在需要的時候&#xff0c;我們也許需要NDIS微型端口程序信息&#xff0c;下面會從多個方面來討論如何查詢NDIS微型端口驅動。 查詢無連接微型端口驅動程序 若要查詢無連接微型端口驅動程序維護的 OID&#xff0c;綁定協議調用 NdisOidRequest 并傳遞 一個NDIS_OID_REQUEST 結…

Mac 安裝 git

文章目錄 前言一、介紹二、下載三、驗證四、配置五、Git常用命令六、git提交和撤銷工作流程代碼提交和提交同步代碼撤銷和撤銷同步 FAQ1.homebrew 下載解決方法一&#xff08;強烈推薦&#xff09;&#xff1a;解決方法二&#xff1a; 總結 前言 Git 是一個開源的分布式版本控…

Java - Stream流式編程

Stream流式操作 Stream流式操作&#xff0c;就是學習java.util.stream包下的API&#xff0c;Stream不同于java的輸入輸出流&#xff0c;是實現對集合&#xff08;Collection&#xff09;的復雜操作&#xff0c;例如查找、替換、過濾和映射數據等&#xff0c;集合是一種靜態的數…

LeetCode547省份數量

題目描述 有 n 個城市&#xff0c;其中一些彼此相連&#xff0c;另一些沒有相連。如果城市 a 與城市 b 直接相連&#xff0c;且城市 b 與城市 c 直接相連&#xff0c;那么城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市&#xff0c;組內不含其他沒有相連的城市。給…

第十一章 文件及IO操作

第十一章 文件及IO操作 文件的概述及基本操作步驟 文件&#xff1a; 存儲在計算機的存儲設備中的一組數據序列就是文件不同類型的文件通過后綴名進行區分 文本文件&#xff1a;由于編碼格式的不同&#xff0c;所占磁盤空間的字節數不同(例如GBK編碼格式中一個中文字符占2字…

cesium繪制三角網可視化及mesh網格數據解析

可視化運行效果(水質污染擴散) 實現運行效果 術語 Mesh網格數據解析 Mesh&#xff08;網格&#xff09;在不同領域有不同的應用和定義。在計算機網絡中&#xff0c;Mesh網絡指的是一種無中心的網狀結構&#xff0c;每個節點都與其他節點相連。而在3D計算機圖形學中&#…

云原生Kubernetes: K8S 1.26版本 部署KubeSphere

目錄 一、實驗 1.環境 2.K8S 1.26版本部署HELM 3.K8S 1.26版本 部署KubeSphere 4.安裝KubeSphere DevOps 二、問題 1.如何安裝Zadig 2.擴展插件Zadig安裝失敗 3.calico 如何實現不同node通信 4.如何清除docker占用的磁盤空間 5.如何強制刪除資源 6.namespace刪除不…

CGAL 點云生成高程模型數據(DSM)

點云生成高程模型 一、什么是DSM?二、C++代碼三、結果可視化一、什么是DSM? DSM(Digital Surface Model)是一種數字高程模型,通常用于描述地表地形的數字化表示。它是由一系列離散的高程數據點組成的三維地形模型,其中每個點都具有其相應的高程值。 ??DSM主要用于獲取和…

宿舍管理系統--畢業設計

畢業設計&#x1f4bc;MD5加密&#x1f512;SSM框架&#x1f3a8;Layui框架&#x1f384; 實現功能 管理員的登錄與登出 管理員,班級,學生,宿舍&#xff0c;衛生&#xff0c;訪客各模塊增刪改查 個別模塊關聯查詢 各個模塊數據導出Excel 一些截圖

[4]CUDA中的向量計算與并行通信模式

CUDA中的向量計算與并行通信模式 本節開始&#xff0c;我們將利用GPU的并行能力&#xff0c;對其執行向量和數組操作討論每個通信模式&#xff0c;將幫助你識別通信模式相關的應用程序&#xff0c;以及如何編寫代碼 1.兩個向量加法程序 先寫一個通過cpu實現向量加法的程序如…

軟件設計:基于 python 代碼快速生成 UML 圖

1. 官方文檔 PlantUML Language Reference Guide Comate | 百度研發編碼助手 百度 Comate (Coding Mate Powered by AI) 是基于文心大模型的智能代碼助手&#xff0c;結合百度積累多年的編程現場大數據和外部優秀開源數據&#xff0c;可以生成更符合實際研發場景的優質代碼。…

自動化測試里的數據驅動和關鍵字驅動思路的理解

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 初次接觸自動化測試時&#xff0c;對數據驅動和關鍵字驅動不甚理解&#xff0c;覺得有點故弄玄須…

GBDT、XGBoost、LightGBM算法詳解

文章目錄 一、GBDT (Gradient Boosting Decision Tree) 梯度提升決策樹1.1 回歸樹1.2 梯度提升樹1.3 Shrinkage1.4 調參1.5 GBDT的適用范圍1.6 優缺點 二、XGBoost (eXtreme Gradient Boosting)2.1 損失函數2.2 正則項2.3 打分函數計算2.4 分裂節點2.5 算法過程2.6 參數詳解2.7…

oracle中insert all的用法

1、簡述 使用insert into語句進行表數據行的插入&#xff0c;但是oracle中有一個更好的實現方式&#xff1a;使用insert all語句。 insert all語句是oracle中用于批量寫數據的 。insert all分又為 無判斷條件插入有判斷條件插入有判斷條件插入分為 Insert all when... 子句 …

利用 MongoDB Atlas 進行大模型語義搜索和RAG

節前&#xff0c;我們星球組織了一場算法崗技術&面試討論會&#xff0c;邀請了一些互聯網大廠朋友、參加社招和校招面試的同學. 針對算法崗技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何準備、面試常考點分享等熱門話題進行了深入的討論。 匯總合集&…

基于英飛凌BGT60LTR11AIP E6327芯片具低功耗的脈沖多普勒操作模式常用于汽車應用的雷達上

芯片特征&#xff1a; 60 GHz收發器MMIC&#xff0c;帶一個發射器和一個接收器單元封裝天線&#xff08;AIP&#xff09;&#xff08;6.73.30.56 mm3)低功耗的脈沖多普勒操作模式自主模式用于運動和運動方向的集成檢測器運動檢測信號的直接輸出目標檢測范圍的15個可配置閾值檢測…

Android14之Binder調試(二百一十一)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

前端面試題日常練-day21 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 AJAX 是什么的縮寫&#xff1f; a) Asynchronous JavaScript and XMLb) Asynchronous JavaScript and XHTMLc) Asynchronous Java and XMLd) Asynchronous Java and XHTML使用 AJAX 可以實現以下哪…