leetcode-018-移动零
刷题之旅从数组类型的题目开始。第十八道题目是移动零,对应leetcode的题号为283。
题目描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
1 | 输入: [0,1,0,3,12] |
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
解题思路
一个简单的思路是复制一个等长的数组,然后前面放非零元素即可,不过题目说明不能拷贝额外的数组空间。那么其实没有这个辅助数组,按照这个思想也是一样的。
我们只需要遍历数组,把非零元素逐个往前面放即可,最后没有放满的地方全部赋予零即可。这样既保证了非零元素的相对顺序,又不需要开拓新数组。
提交代码
1 | class Solution { |
执行结果:
1 | 执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户 |