LeetCode - 283. Move Zeroes(Array, Two Pointers)*

YAMAMAMO·2022년 2월 1일
0

LeetCode

목록 보기
10/100

문제

https://leetcode.com/problems/move-zeroes/

Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.

파파고번역
정수 배열 nums 이 주어지면 0이 아닌 요소의 상대적 순서를 유지하면서 0을 모두 끝부분으로 이동한다.
이 작업은 배열의 복사본을 만들지 않고 인플레이스에서 수행해야 합니다.

Example 1:

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:

Input: nums = [0]
Output: [0]

풀이

자바입니다.

  • int j 를 writePointer 로 사용합니다.
  • 첫 for문에서 배열값이 0이 아니면 j위치의 값을 변경한다. j증가시킨다.
  • 두번째 for문에서는 j(배열의 값이 변경된 횟수이자 위치) 부터 0으로 변경한다.
class Solution {
    public void moveZeroes(int[] nums) {
        int j=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[j]=nums[i];
                j++;    
            }
        }
        
        for(int i=j;i<nums.length;i++){
            nums[i]=0;
        }
        
    }
}

인상적인 풀이
스노우볼을 이용해서 설명하는 방식이 좋았습니다.
https://leetcode.com/problems/move-zeroes/discuss/172432/THE-EASIEST-but-UNUSUAL-snowball-JAVA-solution-BEATS-100-(O(n))-%2B-clear-explanation

profile
안드로이드 개발자

0개의 댓글