算法题之「移动零」
题目如下
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
解法
解法 1:
function zeroMove(array) { let len = array.length; let j = 0; for (let i = 0; i < len - j; i++) { if (array[i] === 0) { array.push(0); array.splice(i, 1); i--; j++; } } return array; }
解法 2:算法思路
function moveZeroToLast(arr) { let index = 0; for (let i = 0, length = arr.length; i < length; i++) { if (arr[i] === 0) { index++; } else if (index !== 0) { arr[i - index] = arr[i]; arr[i] = 0; } } return arr; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论