力扣1144---递减元素使数组呈锯齿状(Java、Python、模拟)

目录

题目描述:

思路描述:

代码:

Java:

Python:


题目描述:

给你一个整数数组 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

思路描述:

题目的最终转换结果无非就两种,第一种就是每个偶数索引对应的元素都大于相邻的元素,第二种就是每个奇数索引对应的元素都大于相邻的元素,因此,我们只需要统计转换成这两种情况的操作次数,再从这两种情况中选一个最小的,即为所求。

代码:

Java:

java 复制代码
class Solution {
    public int movesToMakeZigzag(int[] nums) {
        int n=nums.length;
        int num1=caclute(nums,1,n);//奇数
        int num2=caclute(nums,0,n);//偶数
        return Math.min(num1,num2);
    }
    public int caclute(int[] nums,int start,int n){
        int result=0;
         for(int i=start;i<n;i+=2){
            int a1=Integer.MAX_VALUE;
            if(i-1>=0){
                a1=Math.min(a1,nums[i-1]);
            }
            if(i+1<n){
                a1=Math.min(a1,nums[i+1]);
            }
            if(nums[i]>=a1){
                result+=(nums[i]-(a1-1));
            }
        }
        return result;
    }
}

Python:

python 复制代码
class Solution(object):
    def movesToMakeZigzag(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n=len(nums)
        num1=self.getResult(nums,1,n)
        num2=self.getResult(nums,0,n)
        return min(num1,num2)
    def getResult(self,nums,start,n):
        result=0
        for i in range(start,n,2):
            num=100001
            if i-1>=0:
                num=min(num,nums[i-1])
            if i+1<n:
                num=min(num,nums[i+1])
            if nums[i]>=num:
                result+=(nums[i]-(num-1))
        return result
相关推荐
coberup2 分钟前
django Forbidden (403)错误解决方法
python·django·403错误
逊嘘10 分钟前
【Java语言】抽象类与接口
java·开发语言·jvm
morris13117 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
龙哥说跨境34 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
七星静香42 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员43 分钟前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU43 分钟前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
stewie61 小时前
在IDEA中使用Git
java·git
小白学大数据1 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
flashman9111 小时前
python在word中插入图片
python·microsoft·自动化·word