算法题-移动零
题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:1
2输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
1. 必须在原数组上操作,不能拷贝额外的数组。
2. 尽量减少操作次数。
思路1
采用双循环,当遇到零元素时,与后面序列中第一个非零元素交换。
时间复杂度: $O(n!)$
结果:
执行用时 : 16 ms
内存消耗 :37.4 MB
代码
1 | class Solution { |
思路2
评论中高赞方法是采用双指针的方式。
先将非零元素按照顺序紧密移动到前面,再按照零元素数量对数组后面元素补零。
代码2
1 | class Solution { |
结果
执行用时 : 1 ms
内存消耗 :39.3 MB
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 孙云增的博客!
评论