본문 바로가기

LeetCode

[LeetCode] - 283. Move Zeroes

LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Move Zeroes" 문제입니다.

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

 

문제 : 

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.


Example 1 :

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

Output : [1,3,12,0,0]

 

Example 2 :

Input : nums = [0]

Output : [0]

 

Constraints :

  • 1 <= nums.length <= 10^4
  • -2^31 <= nums[i] <= 2^31 - 1

 

Follow up : Could you minimize the total number of operations done?


이 문제는 주어진 정수 배열에서 모든 0을 배열의 끝으로 이동시키고, 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 k = j; k < nums.length; k++) {
            nums[k] = 0;
        }
    }
}

 

제 코드는 상당히 심플하게 짰습니다. 이 알고리즘은 배열을 한 번 순회하여 0이 아닌 요소를 앞으로 옮기고, 두 번째 순회에서 남은 부분을 0으로 채워서 주어진 조건을 만족하는 배열을 만듭니다. 총 O(n)의 시간 복잡도로 효율적입니다.


Runtime 결과

'LeetCode' 카테고리의 다른 글

[LeetCode] - 125. Valid Palindrome  (3) 2024.07.22
[LeetCode] - 217. Contains Duplicate  (3) 2024.07.22
[LeetCode] - 412. Fizz Buzz  (0) 2024.07.22
[LeetCode] - 709. To Lower Case  (0) 2024.07.22
[LeetCode] - 2235. Add Two Integers  (0) 2024.07.22