

题目链接:https://leetcode.cn/problems/move-zeroes/description/
解题思路: 题目归类数组划分:将一个数组划分成若干个区间

解题方法:

定义两个指针:dest,cur。
![![[Pasted image 20250225103906.png]]](https://developer.qcloudimg.com/http-save/yehe-100000/101292b90b6e687fdee74493db421a05.png)
![![[Pasted image 20250225104208.png]]](https://developer.qcloudimg.com/http-save/yehe-100000/0ef81fbf03d6aeaa6d5edd93e8918f5d.png)
联想思想:快排
`void swap(int*nums,int a,int b)
{
int tmp=0;
tmp=nums[a];
nums[a]=nums[b];
nums[b]=tmp;
}
void moveZeroes(int* nums, int numsSize) {
int n=numsSize;
int dest=-1;
for(int cur=0;cur<numsSize;cur++)
{
if(nums[cur])
{
swap(nums,dest+1,cur);
dest++;
}
}
}``class Solution {
public:
void moveZeroes(vector<int>& nums) {
for(int cur=0,dest=-1;cur<nums.size();cur++)
{
if(nums[cur])
{
swap(nums[++dest],nums[cur]);
}
}
}
};