283. 移动零

一、题目原型:

给定一个数组 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

    原文作者:单车同学
    原文地址: https://www.jianshu.com/p/265063178b40
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞