C++?LeetCode1827題解最少操作使數(shù)組遞增
LeetCode1827.最少操作使數(shù)組遞增
力扣題目鏈接:leetcode.cn/problems/mi…
給你一個整數(shù)數(shù)組 nums
(下標(biāo)從 0 開始)。每一次操作中,你可以選擇數(shù)組中一個元素,并將它增加 1
。
- 比方說,如果
nums = [1,2,3]
,你可以選擇增加nums[1]
得到nums = [1,3,3]
。
請你返回使 nums
嚴(yán)格遞增 的 最少 操作次數(shù)。
我們稱數(shù)組 nums
是 嚴(yán)格遞增的 ,當(dāng)它滿足對于所有的 0 <= i < nums.length - 1
都有 nums[i] < nums[i+1]
。一個長度為 1
的數(shù)組是嚴(yán)格遞增的一種特殊情況。
示例 1:
輸入:nums = [1,1,1]
輸出:3
解釋:你可以進行如下操作:
1) 增加 nums[2] ,數(shù)組變?yōu)?[1,1,2] 。
2) 增加 nums[1] ,數(shù)組變?yōu)?[1,2,2] 。
3) 增加 nums[2] ,數(shù)組變?yōu)?[1,2,3] 。
示例 2:
輸入:nums = [1,5,2,4,1]
輸出:14
示例 3:
輸入:nums = [8]
輸出:0
提示:
1 <= nums.length <= 5000
1 <= nums[i] <= 104
方法一:遍歷
數(shù)字只增不減,還想要整個數(shù)組遞增,那么肯定是從前往后處理一遍數(shù)組,如果這個數(shù)比前一個數(shù)小,那么就讓這個數(shù)變大。
那么變成多大呢?
為了減少“增加操作”的次數(shù),當(dāng)然是變得越小越好。
因此,我們從前往后遍歷數(shù)組,如果數(shù)組中某個元素的值不大于前一個元素,那么就將這個數(shù)通過“數(shù)次加一操作”變成上一個元素+1
- 時間復(fù)雜度O(len(nums))
- 空間復(fù)雜度O(1)
AC代碼
C++
class Solution { public: int minOperations(vector<int>& nums) { int ans = 0; for (int i = 1; i < nums.size(); i++) { if (nums[i] <= nums[i - 1]) { ans += nums[i - 1] + 1 - nums[i]; nums[i] = nums[i - 1] + 1; } } return ans; } };
以上就是C++ LeetCode1827題解最少操作使數(shù)組遞增的詳細內(nèi)容,更多關(guān)于C++ 最少操作數(shù)組遞增的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
c 調(diào)用python出現(xiàn)異常的原因分析
本篇文章是對使用c語言調(diào)用python出現(xiàn)異常的原因進行了詳細的分析介紹,需要的朋友參考下2013-05-05Qt使用QChart實現(xiàn)動態(tài)顯示溫度變化曲線
Qt的QChart是一個用于繪制圖表和可視化數(shù)據(jù)的類,提供了一個靈活的、可擴展的、跨平臺的圖表繪制解決方案,所以本文就將使用QChart實現(xiàn)動態(tài)顯示3個設(shè)備的溫度變化曲線,感興趣的可以了解一下2023-06-06linux內(nèi)核select/poll,epoll實現(xiàn)與區(qū)別
這篇文章主要介紹了linux內(nèi)核select/poll,epoll實現(xiàn)與區(qū)別,需要的朋友可以參考下2016-11-11