Given a fixed-length integer array arr, duplicate each occurrence of zero, shifting the remaining elements to the right.
Answer
mine // originArr의 for문 인덱스는 원래 배열의 값을 순차로 읽어야하기 때문에, 순차적으로 증가하여야만 한다. 그런데 arr에 0을 추가로 삽입하며 사용한 i++에 의하여 순차적으로 읽을 수 없게 되며 실패했다.
class Solution {
public void duplicateZeros(int[] arr) {
// create array
int[] originArr = new int[arr.length];
// copy
originArr = arr;
for (int i = 0; i < arr.length; i++) {
arr[i] = originArr[i];
// duplicate 0
if (originArr[i] == 0 && i < originArr.length - 1) {
arr[i+1] = 0;
i++;
}
}
}
}
leetcode Answer https://leetcode.com/problems/duplicate-zeros/editorial
https://leetcode.com/problems/duplicate-zeros/solutions/4094396/two-simple-java-solutions
class Solution {
public void duplicateZeros(int[] arr) {
int length = arr.length;
int zeros = 0;
for (int i = 0; i < length; i++) {
if (arr[i] == 0) {
zeros++;
}
}
int lastIndex = length - 1;
int newIndex = length - 1 + zeros;
while (lastIndex >= 0) {
if (newIndex < length) {
arr[newIndex] = arr[lastIndex];
}
if (arr[lastIndex] == 0) {
newIndex--;
if (newIndex < length) {
arr[newIndex] = 0;
}
}
lastIndex--;
newIndex--;
}
}
}
'【 개발 이야기 】 > coding test' 카테고리의 다른 글
초보자를 위한 코테 (0) | 2025.01.16 |
---|---|
[leetcode] (Array101) 88. Merge Sorted Array (0) | 2024.08.20 |
[leetcode] (Array101) 977. Squares of a Sorted Array (0) | 2024.08.13 |
[leetcode] (Array101) 1295. Find Numbers with Even number of Digits (4) | 2024.08.13 |
[leetcode] (Array101) 485. Max Consecutive Ones (0) | 2024.08.13 |