반응형
https://leetcode.com/problems/remove-duplicates-from-sorted-array/
2. 2022/04/25 시도
소요시간: 4분
class Solution {
public int removeDuplicates(int[] nums) {
int counter = 1;
for (int i=1; i<nums.length; i++) {
if (nums[i] != nums[i-1]) {
counter++;
}
}
int[] result = new int[counter];
result[0] = nums[0];
int index = 1;
for (int i=1; i<nums.length; i++) {
if (nums[i] != nums[i-1]) {
nums[index++] = nums[i];
}
}
return counter;
}
}
풀이 접근 과정
숫자가 달라질 수 있는 부분, 즉 숫자의 종류의 갯수를 센다.
그 다음에 그 숫자를 다시 in-place(기존에 주어진 배열을 이용)하게 세팅해준다.
느낀점
- 아래는 포인터 두개로 풀었고 이번에는 포인터 하나로 풀었다. 아마도 더 고도화된 해설은 아래이지만 기본적인 방법도 익혀가자.
1. 2022.04.16 시도
소요시간: 4분
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) {
return 0;
}
int prev = 0;
for (int i=1; i<nums.length; i++) {
if (nums[prev] == nums[i]) {
continue;
}
prev++;
nums[prev] = nums[i];
}
return prev+1;
}
}
풀이 접근 과정
이전 인덱스를 저장해두고 같은 숫자가 나오면 넘어간다.
다른 숫자가 나오면 그때 prev를 중가시키고 현재 인덱스 값을 해당인덱스에 저장한다.
실제 갯수는 마지막 세팅된 인덱스에 +1을 한 값이므로 그렇게 리턴한다.
느낀점
- 재밌다.
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(905. Sort Array By Parity) (0) | 2022.04.25 |
---|---|
.leetcode(283. Move Zeroes) (0) | 2022.04.25 |
.leetcode(1299. Replace Elements with Greatest Element on Right Side) (0) | 2022.04.25 |
.leetcode(941. Valid Mountain Array) (0) | 2022.04.23 |
.leetcode(1346. Check If N and Its Double Exist) (0) | 2022.04.23 |