[LeetCode] 283. Move Zeroes(Kotlin)

0

LeetCode

목록 보기
19/58
post-thumbnail

[LeetCode] 283. Move Zeroes(Kotlin)

틀린 풀이

  • 시간 초과
  • 반복문 내부에 반복문이 들어가, 최악의 경우 시간복잡도 = O(10^4 * 10^4)
class Solution {
    fun moveZeroes(nums: IntArray): Unit {
        var indexStart = 0 //0을 찾기 시작하는 인덱스
        var indexEnd = nums.size-1 //0이 이동될 인덱스
        while(indexStart < indexEnd){
            if(nums[indexStart] == 0){
                //0 뒤 모든 숫자들 한 칸 씩 앞으로 이동
                for(i in indexStart .. indexEnd-1){
                    nums[i] = nums[i+1]
                }
                //0 뒤로 이동
                nums[indexEnd--] = 0
            }
     	} 
    }
}

풀이

  • 시간복잡도 O(10^4)
class Solution {
    fun moveZeroes(nums: IntArray): Unit {
        var index = 0 //0이 아닌 숫자가 들어갈 인덱스
        var zeroCount = 0 //0의 개수

        //0이 아닌 숫자들 배열 앞부터 한 칸씩 채우기
        for(i in 0 until nums.size){
            if(nums[i] != 0) nums[index++] = nums[i]
            else zeroCount++
        }
        //0의 개수만큼 배열 뒤 0으로 채우기
        for(i in 0 until zeroCount){
            nums[nums.size-1-i] = 0
        }
    }
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글