given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
1. 思路太局限,一直想用hashmap
2. 不知道当无返回值时怎么更改传入数组的值(应该一个一个的改)
public class Solution {
public void moveZeroes(int[] nums) {
int j = 0;
for(int i = 0; i < nums.length; i++) {
if(nums[i] != 0) {
nums[j] = nums[i];
j++;
}
}
while(j < nums.length) {
nums[j] = 0;
j++;
}
}
}
简化算法,一样的思路,不一样的速度,能用foreach尽量使用foreach,提速提到了j++,
nums[j++]
提升了一半的速度
if(nums.length == 0 || nums == null) return;
int j = 0;
for(int n : nums) {
if(n != 0) {
nums[j++] = n;
}
}
while(j < nums.length) {
nums[j++] =0;
}