一.283. 移动零
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
(把0放在数组末尾,其他顺序不变放前面)
二.
1、用sort
var moveZeroes = function(nums) {
return nums.sort((a,b)=>(b?0:-1))
//如果后一个数不是0则返回0即数组不动 如果是0则返回-1即换位置
};
2、双指针
i遍历数组 j指向最前方的0
i不是0 如果j<i 把i值给j 把0给i
i是0 i++
要点:如果不是0,j会跟着i同步,一旦遇到了0,j就留下了,但是i仍会往前走
var moveZeroes = function(nums) {
for(let i=0,j=0;i<nums.length;i++){
if(nums[i]!=0){
if(j<i){
nums[j]=nums[i];
nums[i] = 0;
}
j++;
}
}
}
三.知识点
1、[].sort((a,b)=>(a-b)) 升序
b-a 降序
2、双指针 快慢指针 慢指针的指向很重要,要理解