力扣复盘 之“移动零”
题目:
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
思路:
1、重写数组:取两个指针,其中一个遍历数组,找非0的元素,找到一个非0元素,计数器就++,同时把以计数器为下标的那个元素赋值成遍历到的那个非零元素。数组遍历完以后,非0元素的个数也统计出来了,剩下的就是0了。
2.数组分区域处理:定义两个分界线指针。其中一个遍历数组(dest);另一个(cur)作为已排列部分0和非0的分界。cur每遍历一个元素,进一次判断,决定放前面还是后面。cur遍历到最后一个元素结束。