leetCode - move zeros (python, javascript)
728x90
반응형
0 1 0 3 12 가 있을 때 앞에 0이 있으면 뒤의 값과 바꾸는 알고리즘을 사용했다 (삽입 정렬)
만약 이전 값이 0이 아닌 수가 있으면 앞에는 이미 0이 없는 상태이므로 다음 원소로 넘어가면 된다
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
for i,e in enumerate(nums):
for j in range(i-1,-1,-1):
if nums[j]!=0: break
nums[j]=nums[j+1]
nums[j+1]=0
2) 비슷하지만 조금 다른 풀이 idx=0 (0의 위치라고 가정)로 둔다.
만약 0이 아닌 수가 있다면 0의 위치에 해당 수를 넣고 해당 수의 위치는 0으로 바꿔준다 (두 자리의 원소를 스위치)
i===idx? 를 검사해주는 이유는 만약 0이 아닌수로만 이루어져 있었거나 현재 검사하는 위치 이전에 없었기 때문에
idx와 i가 같은 경우이다. 그때는 실제로 0이 있는게 아니므로 원래 값을 넣어준다.
아님 아예 idx===i인 경우 continue로 넘어가도 좋을 듯 하다 (idx+=1은 해줘야 한다)
var moveZeroes = function(nums) {
let idx=0;
for (let i=0;i<nums.length;i++){
if(nums[i]!==0){
nums[idx]=nums[i];
nums[i]=i===idx?nums[i]:0;
idx+=1
}
}
};
728x90
반응형
'Leetcode' 카테고리의 다른 글
[LeetCode] 49. Group Anagrams (javascript) (0) | 2020.12.17 |
---|---|
[LeetCode] 125. valid palindrome (javascript) (0) | 2020.12.17 |
[Leetcode] 20. valid parentheses (python, easy) (0) | 2020.11.25 |
[Leetcode] two sum (python, javascript) (0) | 2020.11.23 |
[LeetCode] 파이썬 알고리즘 인터뷰 리뷰 복습하며 다시 풀기 (2020.11.10) (0) | 2020.11.10 |
TAGS.