跳到主要内容

2460.对数组执行操作

链接:2460.对数组执行操作
难度:Easy
标签:数组、双指针、模拟
简介:给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。返回结果数组。

题解 1 - cpp

  • 编辑时间:2022-11-06
  • 执行用时:4ms
  • 内存消耗:8.5MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<int> applyOperations(vector<int>& nums) {
int n = nums.size();
vector<int> list(n, 0);
int idx = 0;
for (int i = 0; i < n; i++) {
if (nums[i] == 0) continue;
if (i == n - 1) {
list[idx++] = nums[i];
} else {
if (nums[i] == nums[i + 1]) {
list[idx++] = nums[i] * 2;
nums[i + 1] = 0;
} else {
list[idx++] = nums[i];
}
}
}
return list;
}
};

题解 2 - cpp

  • 编辑时间:2023-06-05
  • 内存消耗:8.6MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<int> applyOperations(vector<int>& nums) {
int n = nums.size(), start = 0;
for (int i = 0; i < n - 1; i++) {
if (nums[i] == nums[i + 1]) {
nums[i] *= 2;
nums[i + 1] = 0;
}
if (nums[i] != 0) nums[start++] = nums[i];
}
if (nums[n - 1]) nums[start++] = nums[n - 1];
while (start < n) nums[start++] = 0;
return nums;
}
};