算法之旅-Hot100—移动零
题目:移动零
描述:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。
示例:
输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0]算法思路:
原地操作,直接忽略 0 的影响,把当前数组也看做是一个空栈,遍历数组后,定义一个栈指针,为存入栈的位置,如果当前元素不为 0 就将其存入'栈'中,遍历后,将剩余位置全部补零就可!
class MoveZeroes{ public void moveZeroes(int[] nums) { int index = 0; for(int i : nums){ if(i != 0){ nums[index++] = i; } } Arrays.fill(nums,index,nums.length,0); } }注:只为记录自己的练习过程,方便回顾!
