문제링크: leetcode.com/problems/remove-duplicates-from-sorted-array/
문제 요약: (문제 이해하는게 제일 오래걸렸다.) 정렬된 배열이 주어졌을때, 주어진 배열을 바꾸고(중복을 다 제거하고), 중복아닌 원소 갯수 반환.
* 부연설명: 주어진 배열이 [1,1,2,2,3] 이면 중복을빼면 [1,2,3] 인데, 주어진 배열 자체를 [1,2,3,2,3] 뒷인덱스는 신경안쓴다고함. 이런식으로 바꾸고 중복아닌 원소 갯수를 return;
예: [1,1,2] -> [1,2] (내가푼 방식되로 한다면, 원래 배열은 [1,2,2] 이렇게 되있음)
예: [0,0,1,1,1,2,2,3,3,4] -> [0,1,2,3,4] (마찬가지로 원래 배열은 [0,1,2,3,4,2,2,3,3,4]
문제접근: 문제만 이해한다면 반복문 한번에 끝낼 수 있다. (문제가 이상한거 같아서 싫어요가 많다.)
구현코드:
class Solution {
public int removeDuplicates(int[] nums) {
int res = 1;
for(int i = 0; i < nums.length - 1; i++) {
if (nums[i] != nums[i+1]) {
nums[res] = nums[i+1];
res++;
}
}
return res;
}
}
res가 1인 이유는, 맨 앞 원소는 무조건 포함이니까 (중복이든 아니든 세야한다.) 두번째 인덱스부터 숫자를 채워나가기 위해서이다.
마찬가지로 싫어요가 많아서 안풀라했지만, easy 안푼것들 풀어보려고 해서 풀어봄.
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 35. Search Insert Position (0) | 2021.01.11 |
---|---|
LeetCode 28. Implement strStr() (0) | 2021.01.08 |
LeetCode 13. Roman to Integer (0) | 2021.01.07 |
LeetCode 337. House Robber III (0) | 2020.12.04 |
LeetCode 2. Add Two Numbers (0) | 2020.12.03 |