给你一个长度固定的整数数组 arr, 请你将该数组中出现的每一个零都复写一遍, 并将其他的元素向右平移。 注意: 请不要在超过该数组长度的位置写入元素。 要求: 请对输入的数组 就地 进行上述修改, 不要从函数返回任何东西。
输入:[1,0,2,3,0,4,5,0]
输出:null
解释:调用函数后,输入的数组将被修改成:[1,0,0,2,3,0,0,4]web
输入:[1,2,3]
输出:null
解释:调用函数后,输入的数组将被修改成:[1,2,3]算法
1 <= arr.length <= 10000
0 <= arr[i] <= 9数组
/** * @param {number[]} arr * @return {void} Do not return anything, modify arr in-place instead. */ var duplicateZeros = function(arr) { let i = 0, count = 0; while(i < arr.length) { if(arr[i++] === 0) { let j = arr.length - 1; while(j >= i) { arr[j--] = arr[j]; } i++; } } };
执行用时 : 84 ms, 在全部 JavaScript 提交中击败了94.78%的用户svg
内存消耗 : 34.9 MB, 在全部 JavaScript 提交中击败了100.00%的用户函数
/** * @param {number[]} arr * @return {void} Do not return anything, modify arr in-place instead. */ var duplicateZeros = function(arr) { let i = 0, count = 0; while(i < arr.length) { if(arr[i++] === 0) { arr.pop(); arr.splice(i++, 0, 0); } } };
执行用时 : 80 ms, 在全部 JavaScript 提交中击败了96.79%的用户spa
内存消耗 : 35.1 MB, 在全部 JavaScript 提交中击败了100.00%的用户code