很基础的一道题,我采用双指针法来解决。
题解:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int right = 0;
int left = 0;
for (int right = 0; right < nums.size(); right++) {
if (nums[right]) {
swap(nums[left], nums[right]);
left++;
}
}
}
};
过程解释
一开始我们定义一左一右两个指针,然后指向数组初始位置,紧接着right指针开始移动遇到为0的继续走,遇到不为0的将其与left指针进行交换。通俗一点的理解就是,右指针只对非0数感兴趣,遇到非0数就把他扔到左边,遇到0就直接忽略不管,这样就完成了排序。
总结
问题不难,主要是学习这样的思路,能够举一反三才是目的,也希望自己能够持之以恒的记录下去。