283. Move Zeroes--LeetCode Record

Tong_hdj發表於2016-07-10

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].

    func moveZeroes(inout nums: [Int]) {
        var zeroCount:Int = 0

        for index in 0..<nums.count {
            if nums[index] == 0 {
                zeroCount++
                continue
            }
            swap(&nums, index, index - zeroCount)
        }
    }

    func swap(inout nums: [Int], _ p:Int , _ q:Int) {
        if p <= (nums.count - 1) && q <= (nums.count - 1) {
            var num:Int = nums[q]
            nums[q] = nums[p]
            nums[p] = num
        }
    }

相關文章