給定一個(gè)數(shù)組 nums绊率,編寫一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾谨敛,同時(shí)保持非零元素的相對(duì)順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原數(shù)組上操作滤否,不能拷貝額外的數(shù)組脸狸。
盡量減少操作次數(shù)。
啊藐俺,我想用雙指針炊甲,各種特殊情況滿足不了。腦子清醒點(diǎn)再補(bǔ)上
var moveZeroes = function(nums) {
let index = 0//設(shè)置一個(gè)計(jì)數(shù)器
nums.forEach((num)=>{//遍歷數(shù)組非0元素賦給計(jì)數(shù)器位置
if(num!=0){
nums[index] = num
index++
}
})
//遍歷結(jié)束后將計(jì)數(shù)器之后的值賦為0
for(let i=index;i<nums.length;i++){
nums[i] = 0
}
console.log(nums)
console.log(index)
return nums
};
moveZeroes([1,0])
冒泡:
var moveZeroes = function(nums) {
for(let j=1;j<nums.length;j++){
for(let i=1;i<nums.length;i++){
if(nums[i-1]==0){ //遇到0元素向右交換位置
let temp = nums[i-1]
nums[i-1] = nums[i]
nums[i] = temp
}
}
}
console.log(nums)
return nums
};