283.网络零(javascript)leetcode题
原创给定一个数组 nums,编写一个函数。 0 移动到数组的末尾,同时保持非零元素的相对顺序。
Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
- 您必须对原始阵列进行操作,不能复制其他阵列。
-
尽量减少操作次数。
//for循环 var moveZeroes = function (nums) { if (nums.length == 0) { return } var j = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] != 0) { [nums[i], nums[j]] = [nums[j], nums[i]]; j++ } } };
//while 循环 var moveZeroes = function (nums) { if (nums.length == 0) { return } var i = 0; var j = 0; while (i < nums.length) { if (nums[i] != 0) { [nums[i], nums[j]] = [nums[j], nums[i]]; //交换顺序 i++; j++; } else { i++; } } };
使用双指针
当遇到非零项时,将为每个值交换两个指针。j自加一------j指针向前移动一
碰到0的时候,i自加一,j此时指针保持不变。j指针指向0,直到i指针指向非-0交换将在此时进行。0过渡到后面等等,最后会0一切都变了。
leetcode地址: https://leetcode-cn.com/problems/move-zeroes/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



