2460.对数组执行操作
链接:2460.对数组执行操作
难度:Easy
标签:数组、双指针、模拟
简介:给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。返回结果数组。
题解 1 - 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;
}
};
题解 2 - 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;
}
};