283. Move Zeroes
阿新 • • 發佈:2020-11-17
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 } } }