直接从头到尾遍历,判断当前元素索引奇偶,如果当前是偶数便认为是在对“奇数最大”情况进行计算,将当前数字比两边数字多出来的地方(两侧差值取最大加1)累加到res_odd
中,同理当前是奇数就是在计算“偶数最大”的情况。
class Solution {
public int movesToMakeZigzag(int[] nums) {
int res_odd = 0,res_even = 0;
for(int i=0;i<nums.length;i++)
{ int tmp = 0;
if(i%2==0)
{
if(i-1>=0)
{
tmp = Math.max(tmp,nums[i]-nums[i-1]+1);
}
if(i+1<nums.length)
{
tmp = Math.max(tmp,nums[i]-nums[i+1]+1);
}
res_odd+=tmp;
}
else
{
if(i-1>=0)
{
tmp = Math.max(tmp,nums[i]-nums[i-1]+1);
}
if(i+1<nums.length)
{
tmp = Math.max(tmp,nums[i]-nums[i+1]+1);
}
res_even+=tmp;
}
}
return Math.min(res_odd,res_even);
}
}
时间 0 ms 击败 100% 内存 38.7 MB 击败 97.90%