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
}
}