给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例
输入: [0,1,0,3,12]输出: [1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
解决方法:
使用冒泡排序改良版
1 var moveZeroes = function(nums) { 2 var temp = null 3 for (var i = 0, j = nums.length; i < j; i++) { 4 for (var m = 0, n = nums.length - i - 1; m < n; m++) { 5 if (nums[m] === 0) { 6 temp = nums[m] 7 nums[m] = nums[m + 1] 8 nums[m + 1] = temp 9 }10 }11 }12 13 return nums14 };
使用javascript中sort方法,本地测试通过,在leedcode中失效。方法如下
1 var moveZeroes = function(nums) {2 nums.sort(function (a, b) {3 return b == 0 ? -1 : 04 })5 6 return nums7 };
存在疑问:javascript的sort采用的是什么排序算法?