郑州做商城网站公司,李青青做网站 公司主要做应用领域,网站改版打造全新网站,石狮网站建设哪家好坚持按题型打卡刷梳理力扣算法题系列#xff0c;语言为go#xff0c;Day19 移动零#xff08;双指针#xff09;
题目描述 解题思路 p和q同时从起点移动#xff0c;p每次都#xff0c;q仅在交换时#xff0c;p遇到非零数时与p值交换#xff01;#xff01;… 坚持按题型打卡刷梳理力扣算法题系列语言为goDay19 移动零双指针
题目描述 解题思路 p和q同时从起点移动p每次都q仅在交换时p遇到非零数时与p值交换因为如果左指针位置开始不为0的话会和右指针同步一起移动直到左指针到达第一个为0的位置左指针就会停留在第一个为0的位置而右指针则停留在这个位置右边第一个不为0的位置 此后就是交换把非零元素往左边换把零元素往右边换左右两指针控制着零元素的边界。遇到第一个0的时候就会停留在第一个0的位置了没遇到的时候左右指针指向的是相同的位置注意代码里j的位置没遇到0的时候左右指针都会往右移动的遇到0的时候只有右指针移动所以左指针就停留在0了 代码参考
func moveZeroes(nums []int) {p,q : 0,0tmp : 0for plen(nums){if nums[p] ! 0{tmp nums[p]nums[p] nums[q]nums[q] tmpq}p}
}