将0移到最后,在原数组操作,并且不能改变源数据顺序。
示例:输入:[2,0,0,1,0,3], 结果:[2,1,3,0,0,0]
问题分析:注意是在原数组上操作,不要进行任何数组拷贝操作,还要保证操作后的源数据顺序不变。
直接上JS代码:
//ES6箭头函数写法 const moveZero = (arr) => { let y = 0;//定义y用于控制循环结束 for (let i = 0; y < arr.length; y++) { if (arr[i] === 0) arr.push(arr.splice(i, 1)[0]);//循环到是0的位置就删除该元素0并且在arr末尾push进这个元素0,由于splice删除了该位置元素,所以i不用+1,下次循环仍然检查i位置的元素 else i++;//循环到不是0的位置就继续往后循环 } return arr;//返回操作后的原数组 }; //运行如下: moveZero([2,0,0,1,0,3]);//[2,1,3,0,0,0]