Leetcode6229.对数组执行操作
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;
}
}
注意问题
索引越界