【leetcode】283. Move Zeroes

来源:互联网 发布:ubuntu安装redis 编辑:程序博客网 时间:2024/06/06 07:15

原题如下:

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

Note:

  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.
大致意思就是给一个数组,把所有的零移到最后面,不要创建新的数组来存放,结果直接修改nums就行,也不用返回。
以下使用js实现
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var moveZeroes = function(nums) {    var j=nums.length;    for(var i=0;i<j;i++){        if(nums[i]===0){            nums.splice(i,1);            nums.push(0);            j--;            i--;        }    }};


大致的想法就是遍历比较是否为零,如果一样的话就删除该元素,然后在结尾加入一个零,同时i,j减一,减少遍历次数。

如果你有更好的算法欢迎在评论中一起探讨。



0 0
原创粉丝点击