呼市网站设计,php 网站开发 pdf,临沧网站建设公司,做响应式网站应该注意什么题目解析 移动零
nums [0,1,0,3,12]
[1,3,12,0,0]算法原理 数组划分#xff08;数组分块#xff09;
双指针算法#xff08;利用数组下标来充当指针#xff09;使用两个指针的作用#xff1a;
cur指针#xff1a;从左往右扫描数组#xff0c;就是遍历数组。
dest指针…题目解析 移动零
nums [0,1,0,3,12]
[1,3,12,0,0]算法原理 数组划分数组分块
双指针算法利用数组下标来充当指针使用两个指针的作用
cur指针从左往右扫描数组就是遍历数组。
dest指针已经处理之后的区间内非零元素的最后一个位置这两个指针将分隔为三个区间
第一个[0,dest]
第二个[dest1,cur-1]
第三个[cur,n-1]第一个[0,dest] 非0元素
第二个[dest1,cur-1] 0元素
第三个[cur,n-1] 未处理元素[0,1,0,3,12] 当你遇到0元素的时候只需要让cur向后移动一位即可
当你遇到非0元素的时候需要让dest先去向后移动一位然后交换dest与cur位置的元素然后cur继续向后移动一位。当cur遍历到n位置的时候表示已经完成。总结一下
cur从前往后遍历的过程中会有两种情况1.遇到0元素cur2.遇到非0元素swap(dest1,cur)dest,cur编写代码
class Solution {
public:void moveZeroes(vectorint nums) {for(int cur 0,dest -1;curnums.size();cur){if(nums[cur]!0){swap(nums[dest],nums[cur]);}}}
};