leetcode 283和2460
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;}
};