标签:额外 class 空间复杂度 for 复杂度 遍历 length 复杂 操作
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
class Solution {
public void moveZeroes(int[] nums) {
for (int i = 0; i < nums.length; i++) {
if (nums[i]==0) {
for (int j = i+1; j < nums.length; j++) {
int temp;
if (nums[j]!=0) {
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
break;
}
}
}
}
}
}
用一个指针存非零元素的位置,把非零的数按相对顺序排放在数组
在从非零元素个数起,遍历一遍nums,全部赋值0
public void moveZeroes(int[] nums) {
int notZero = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i]!=0){
nums[notZero] = nums[i];
notZero++;
}
}
for (int i = notZero; i < nums.length; i++) {
nums[i] = 0;
}
}
标签:额外 class 空间复杂度 for 复杂度 遍历 length 复杂 操作
原文地址:https://www.cnblogs.com/Sheltonz/p/13906582.html