zoukankan      html  css  js  c++  java
  • 【leetcode】1144. Decrease Elements To Make Array Zigzag

    题目如下:

    Given an array nums of integers, a move consists of choosing any element and decreasing it by 1.

    An array A is a zigzag array if either:

    • Every even-indexed element is greater than adjacent elements, ie. A[0] > A[1] < A[2] > A[3] < A[4] > ...
    • OR, every odd-indexed element is greater than adjacent elements, ie. A[0] < A[1] > A[2] < A[3] > A[4] < ...

    Return the minimum number of moves to transform the given array nums into a zigzag array.

    Example 1:

    Input: nums = [1,2,3]
    Output: 2
    Explanation: We can decrease 2 to 0 or 3 to 1.
    

    Example 2:

    Input: nums = [9,6,1,6,2]
    Output: 4
    

    Constraints:

    • 1 <= nums.length <= 1000
    • 1 <= nums[i] <= 1000

    解题思路:本题无外乎两种情况,一种是nums[0] > nums[1],另一种是nums[0] < nums[1],把这两种情况计算一遍求较小值即可。在计算过程中,如果要求nums[i] > nums[i-1],那么把nums[i-1] 减到nums[i] - 1;如果要求nums[i] < nums[i-1],则把nums[i]减少到nums[i-1] - 1。

    代码如下:

    class Solution(object):
        def movesToMakeZigzag(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            # flag -  0: decrease; 1:increase
            def process(flag,nums):
                count = 0
                for i in range(1, len(nums)):
                    if flag == 0 and nums[i] >= nums[i - 1]:
                        count += (nums[i] - nums[i - 1] + 1)
                        nums[i] = nums[i - 1] - 1
                    elif flag == 1 and nums[i] <= nums[i - 1]:
                        count += (nums[i - 1] - nums[i] + 1)
                        nums[i - 1] = nums[i] - 1
                    flag = not flag
                return count
    
    
            #nums[0] > nums[1]
            res = process(0,nums[::])
            # nums[1] > nums[0]
            res = min(res,process(1,nums))
            return res
  • 相关阅读:
    Xamarin.Forms教程下载安装Xamarin.iOS
    【基于STM32F407IGT6】STemWin5.20d + uCOS-III + FatFS程序下载
    EnOcean-自获能无线电技术
    FreeRTOS 使用指南(转)
    FreeRTOS的内存管理
    FreeRTOS初步认识
    Freertos之系统配置
    FreeRTOS代码剖析
    STM32之FreeRTOS
    STM32 电机控制库的资源
  • 原文地址:https://www.cnblogs.com/seyjs/p/11383437.html
Copyright © 2011-2022 走看看