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)의 시간 복잡도로 효율적입니다.
'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 |