LeetCode 1144. 递减元素使数组呈锯齿状(奇偶分别遍历)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1144. 递减元素使数组呈锯齿状(奇偶分别遍历)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給你一個整數數組 nums,每次 操作 會從中選擇一個元素并 將該元素的值減少 1。
如果符合下列情況之一,則數組 A 就是 鋸齒數組:
- 每個偶數索引對應的元素都大于相鄰的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > …
- 或者,每個奇數索引對應的元素都大于相鄰的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < …
返回將數組 nums 轉換為鋸齒數組所需的最小操作次數。
示例 1: 輸入:nums = [1,2,3] 輸出:2 解釋:我們可以把 2 遞減到 0,或把 3 遞減到 1。示例 2: 輸入:nums = [9,6,1,6,2] 輸出:4提示: 1 <= nums.length <= 1000 1 <= nums[i] <= 1000來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/decrease-elements-to-make-array-zigzag
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 奇數位都小于兩側,或者偶數位都小于兩側,兩種情況取最小的操作次數
0 ms 7.2 MB
class Solution: # py3def movesToMakeZigzag(self, nums: List[int]) -> int:op1, op2 = 0, 0n = len(nums)for i in range(n):cur = nums[i]if i&1:if cur >= nums[i-1]:op1 += cur-nums[i-1]+1cur = nums[i-1]-1if i+1 < n and cur >= nums[i+1]:op1 += cur-nums[i+1]+1else:if i>0 and cur >= nums[i-1]:op2 += cur-nums[i-1]+1cur = nums[i-1]-1if i+1 < n and cur >= nums[i+1]:op2 += cur-nums[i+1]+1return min(op1, op2)72 ms 13.8 MB
總結
以上是生活随笔為你收集整理的LeetCode 1144. 递减元素使数组呈锯齿状(奇偶分别遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 186. 翻转字符串里
- 下一篇: Pandas入门2(DataFuncti