283. 移动零

作者: 花果山松鼠 | 来源:发表于2018-09-21 11:03 被阅读3次

    一、题目原型:

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    二、题目意思剖析:

    示例:
    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]
    说明:
    必须在原数组上操作,不能拷贝额外的数组。
    尽量减少操作次数。
    

    三、解题思路:

    遍历数组,如果发现元素=0,直接删除当前元素,在数组末尾加上0

    [0,1,0,3,12]
    [1,0,3,12,0]
    [1,3,12,0,0]
    [1,3,12,0,0]
    
    func moveZeroes(_ nums: inout [Int]) {
        
        if nums.count == 1 {
            return
        }
        var i: Int = 0
        var j: Int = 0
        let n: Int = nums.count
        while i<n && j<n {
            if nums[i] == 0 {
                  print("\(i)开始\(nums)")
                nums.remove(at: i)
                  print("\(i)删除\(nums)")
                nums.append(0)
                  print("\(i)添加\(nums)")
            }else {
              i = i + 1
            }
            j = j + 1
        }
    }
    

    四、小结

    耗时32毫秒,超过59.06%的提交记录,总提交数21

    相关文章

      网友评论

        本文标题:283. 移动零

        本文链接:https://www.haomeiwen.com/subject/rmlanftx.html