给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
class Solution {
public void moveZeroes(int[] nums) {
int len = nums.length;
if (nums == null || len < 2) return;
// 记录0的个数,不是0的数往前移动当前0的个数位
int zCut = 0; // 零的个数
for (int i = 0; i < len; i++) {
if (nums[i] == 0) {
zCut++;
} else {
if (zCut != 0) {
nums[i - zCut] = nums[i];
}
}
}
// 从后往前向数组里补零
int i = len - 1;
while (zCut > 0) {
nums[i--] = 0;
zCut--;
}
}
}
作者:angenin11
链接:https://leetcode-cn.com/problems/move-zeroes/solution/java-by-angenin11/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。