首页 > 其他分享 >递减元素使数组呈锯齿状

递减元素使数组呈锯齿状

时间:2023-02-27 08:55:45浏览次数:31  
标签:minMoves 锯齿状 nums int 元素 数组 递减 Math

//

给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。

如果符合下列情况之一,则数组 A 就是 锯齿数组:

  • 每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > ...
  • 或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < ...

返回将数组 nums 转换为锯齿数组所需的最小操作次数。

 

//class Solution { private static final int EVEN = 0; private static final int ODD = 1; public int movesToMakeZigzag(int[] nums) { int n = nums.length; int[] minMoves = new int[2]; for (int i = 0; i < n; i++) { int l = (i - 1 >= 0) ? nums[i - 1] : Integer.MAX_VALUE; int r = (i + 1 < n) ? nums[i + 1] : Integer.MAX_VALUE; minMoves[i % 2] += Math.max(0, nums[i] - Math.min(l, r) + 1); } return Math.min(minMoves[EVEN], minMoves[ODD]); } }

 

//刚开始用的只看偶数的for循环,导致数组溢出。

标签:minMoves,锯齿状,nums,int,元素,数组,递减,Math
From: https://www.cnblogs.com/zzzzzzx/p/17158456.html

相关文章

  • 改变原数组和不改变原数组
    改变原数组:unshift:向数组开头添加元素push:向数组末尾添加元素,并返回新的长度unshift:向数组开头添加元素,并返回新的长度shift:将第一个元素删除并且返回删除元素re......
  • WebAssembly之数据交换(数组)
    因为工作需要,又倒腾起了WebAssembly,这次主要探索(解决)的问题是Array类型数据的传递经过咨询以及与ChatGPT的沟通,目前有了如下两种方案:1.通过类型化数组传递1//c++2......
  • [LeetCode]4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。分别查找两个数组的......
  • 数组与自定义函数
    一维数组    ·                  字符可以做下标吗?数组的下标必须是整数,那么字符可以做下标吗?比如:int a[255];a[......
  • 稀疏数组SparseArray
    稀疏数组SparseArray1.稀疏数组介绍当一个数组中的大部分元素都为0,或者大部分元素均为同一个值时,此时记录了很多没有意义的数据,可以用稀疏数组来保存该数组。在稀疏数......
  • 02_18_Java语音进阶||day18_Java基础小节练习(17-20部分)数据类型转换&运算符&方法入门
    第一部分数据类型转换&运算符&方法入门第一题编写步骤:定义类Test1定义main方法定义两个byte类型变量b1,b2,并分别赋值为10和20.定义变量b3,保存b1和b2的和,并输出.定义两......
  • 数据结构(借鉴408)-数组
    数据结构数组1.多维数组的存储2.特殊矩阵(数组)的压缩存储3.数组的应用定义与地址计算数组是由n(n>1)个具有相同数据类型的数据元素a1,a2,...,an组成的有序序列,且该......
  • 349. 两个数组的交集
    1classSolution{2public:3vector<int>intersection(vector<int>&nums1,vector<int>&nums2){4set<int>num1;5set<int>num2;......
  • (非函数方法)查找有序数组中x的位置(二分/折半)
    #include<stdio.h>intmain(){intx=0;intarr[]={1,2,3,4,5,6,7,8,9,10};intmax=sizeof(arr)/sizeof(arr[0]);intright=max-1;intleft=0;......
  • 数组类目:219. 存在重复元素 II
    思路:代码:classSolution{publicbooleancontainsNearbyDuplicate(int[]nums,intk){HashSet<Integer>set=newHashSet<>();for(inti=0;i<......