-
[LeetCode] 283. Move Zeroes알고리즘 2022. 4. 24. 19:09
[LeetCode] 283. Move Zeroes
방법_#1
remove 를 사용해서 0 을 제거한 다음, 처음 리스트 길이와 제거된 리스트 길이만큼 0을 추가하는 방법
time : O(N*K)
space: O(1)class Solution(object): def moveZeroes(self, nums): """ :type nums: List[int] :rtype: None Do not return anything, modify nums in-place instead. """ n = len(nums) while (nums.count(0) > 0): nums.remove(0) m = len(nums) for i in range(n-m): nums.append(0)
방법_#2
배열을 순회하면서 0이 아닌 수를 임시 리스트에 담고, 마지막에 for 문을 돌려 확인
time : O(N)
space: O(N)n = len(nums) arr = [0] * n idx = 0 for _ in range(n): if (nums[_] != 0): arr[idx] = nums[_] idx += 1 for _ in range(n): nums[_] = arr[_]
방법_#3
숏코딩. 값이 0 이면 뒤쪽에 정렬되도록 sort
time : O(NlogN)
space: O(1)class Solution(object): def moveZeroes(self, nums): """ :type nums: List[int] :rtype: None Do not return anything, modify nums in-place instead. """ nums.sort(key=lambda x:True if x ==0 else False)
'알고리즘' 카테고리의 다른 글
[LeetCode] Two Pointer, Sliding Window (0) 2022.04.26 [LeetCode] 167. Two Sum II - Input Array Is Sorted (0) 2022.04.24 [LeetCode] 189. Rotate Array (0) 2022.04.24 [LeetCode] 977. Squares of a Sorted Array (0) 2022.04.24 [LeetCode] # 35. Search Insert Position (0) 2022.04.24