Search
Duplicate
📒

[LeetCode Top 150] 01-3. Remove Duplicate from Sorted Array - Easy

상태
완료
수업
Algorithm Solving
주제
LeetCode Top Interview 150
4 more properties
참고

문제해설

NOTE
입력 ⇒ 비내림차순 정수 배열을 제공한다.
출력 ⇒ 기존 정수 배열 길이 - 중복되는 요소의 개수

문제 로직고민

NOTE
비내림차순으로 정렬되어 있다 ⇒ 오름차순으로 정렬되어 있다!
int idx = 1; int k = 0; for(int i = 1; i < 배열 길이; i++) { if(배열[i] <= 배열[i-1] k++; else 배열[idx++] = 배열[i]; }
Java
복사
처음에 비내림차순에 대해서 정렬이 되어있지 않다는 말인지 헷갈렸는데 검색해보니 다음 값이 동일할수 있는 오름차순이라고 한다.
오름차순으로 정렬되어 있는경우, 이전 값보다 큰값이 아닌경우를 중복으로 생각하면된다.

작성코드

NOTE
class Solution { public int removeDuplicates(int[] nums) { int idx = 1; int k = 0; for(int i = 1; i < nums.length; i++){ if(nums[i] <= nums[i-1]) k++; else nums[idx++] = nums[i]; } return nums.length - k; } }
Java
복사

정답코드

NOTE
class Solution { public int removeDuplicates(int[] nums) { int i=0; for(int j=1;j<nums.length;j++) { if(nums[i]!=nums[j]) { i++; nums[i]=nums[j]; } } return i+1; } }
Java
복사
메모리를 가장 적게 사용하는 코드
메모리 2.4MB차이의 코드이다.
내가 사용한 변수 idx와 k를 더 효율적으로 사용한거같다.