leetcode 283. Move Zeroes
代码:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = nums.size();
int slowIdx = 0;
for(int fastIdx = 0;fastIdx <n;fastIdx++){
if(nums[fastIdx] != 0){
nums[slowIdx++] = nums[fastIdx];
}
}
while(slowIdx<n)
nums[slowIdx++] = 0;
}
};
其实可以更快
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n = nums.size();
int i =0;
for(int j =0;j <n;j++){
if(nums[j] != 0){
swap(nums[i++],nums[j]);
}
}
}
};
leetcode 2460. Apply Operations to an Array
代码:
class Solution {
public:
vector<int> applyOperations(vector<int>& nums) {
int n = nums.size();
for(int i = 0;i < n -1;i++){
if(nums[i] == nums[i+1]){
nums[i] *=2;
nums[i+1] = 0;
}
}
int slowIndex = 0;
for(int firstIndex = 0;firstIndex < n;firstIndex++){
if(nums[firstIndex] != 0){
nums[slowIndex++] = nums[firstIndex];
}
}
while(slowIndex < n)
nums[slowIndex++] = 0;
return nums;
}
};
更快的做法:
class Solution {
public:
vector<int> applyOperations(vector<int>& nums) {
int n = nums.size();
for(int i = 0,j = 0;i < n;i++){
if(i < n-1 && nums[i] == nums[i+1]){
nums[i] *=2;
nums[i+1] = 0;
}
if(nums[i]!=0)
swap(nums[j++],nums[i]);
}
return nums;
}
};