1. 程式人生 > 實用技巧 >283. Move Zeroes

283. Move Zeroes

package LeetCode_283

/**
 * 283. Move Zeroes
 * https://leetcode.com/problems/move-zeroes/description/
 *
 * 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.
 *
Example:
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
 * 
*/ class Solution { /* * solution: loop to check the element if 0 or not and use index to reset the position of element in array, * Time:O(n), Space:O(1) * */ //algorithm 1: move zero to the end fun moveZeroes(nums: IntArray): Unit { var index = 0 for (i in nums.indices) {
if (nums[i] != 0) { nums[index++] = nums[i] } } for (i in index until nums.size) { nums[i] = 0 } } //algorithm 2: move zero to the front fun moveZeroesToFront(nums: IntArray): Unit { val n = nums.size - 1 var index
= nums.size - 1 for (i in n downTo 0) { if (nums[i] != 0) { nums[index--] = nums[i] } } for (i in index downTo 0) { nums[i] = 0 } } }