package leetcode

/**
 * 283. 移动零
 * https://leetcode-cn.com/problems/move-zeroes/
 * @program: leetcode
 * @description: ${description}
 * @author: hewking
 * @create: 2019-10-22 11:46
 *给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作，不能拷贝额外的数组。
尽量减少操作次数。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/move-zeroes
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 **/
object MoveZeroes {

    class Solution {
        /**
         * 思路：
         * 参考冒泡排序，把0 冒到最后的位置
         * 时间复杂度： O(n^2)
         */
        fun moveZeroes(nums: IntArray): Unit {
            for (i in 0 until nums.size) {
                if (nums[i] == 0) {
                    for (j in i + 1 until nums.size){
                        if (nums[j] != 0){
                            val tmp = nums[i]
                            nums[i] = nums[j]
                            nums[j] = tmp
                            break
                        }
                    }
                }
            }
        }
    }

}