力扣318周赛--6229.对数组执行操作

78 阅读1分钟

Leetcode6229.对数组执行操作

链接:leetcode.cn/problems/ap…

1.思路

本题分为两步。

遍历加双指针

第一步:根据题意,循环遍历把从0~n范围的相邻元素,如果nums[i]和nums[i+1]相等的话,把nums[i]*2,nums[i+1]赋为0。

第二步:完成第一步之后,开辟一个新数组,用双指针,一个去指向原来数组看哪些元素符合情况,另一个指针指向新数组把这些符合情况的加到新数组里,最后返回新数组。

代码实现

class Solution {

public int[] applyOperations(int[] nums) {

int n=nums.length;

for(int i=0;i<n-1;i++){

if(nums[i]==nums[i+1]){

nums[i]=nums[i]*2;

nums[i+1]=0;

}

}

int[]ans=new int[n];

int j=0;

for(int i=0;i<n;i++){

if(nums[i]!=0){

ans[j++]=nums[i];

}

}

return ans;

}

}

注意问题

索引越界