题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
1.必须在原数组上操作,不能拷贝额外的数组。
2.尽量减少操作次数。
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2ba4i/
来源:力扣(LeetCode)
我的解法
1 | class Solution { |
思路就是记住最后不是0的位置,每次将0移动到后面。代码比较繁琐且不易理解。
官方解法
1 | void moveZeroes(vector<int>& nums) { |
以上为C++版本
1 | class Solution { |
解题思路:
遍历数组,无为0的元素移动数组前方,用index下标记录。
遍历结束,对index值后的元素统一设为0。
通俗易懂,看了一遍就理解了,相比之下我的解法真是太烂了。题解还是有非常多的解法值得学习!