LeetCode 문제 중 난이도 Easy인 Remove Duplicates from Sorted Array이다. 문제 링크는 포스팅의 맨 마지막에 추가하였다. 언어는 Java를 사용했다.
문제해석
정렬된 배열인 nums를 입력으로 받아 모든 요소들이 한번씩만 나타나도록 배열을 수정하고 길이를 리턴하여라. 새로운 저장공간을 사용하지 말고 input 배열을 수정하는 것으로 O(1)의 추가 메모리 내에서 해결해라.
이번 문제는 꽤 쉽다! 배열을 탐색하면서 중복값인지 아닌지 체크하고 중복값이 아닌 경우에만 앞에서부터 하나씩 저장해준다. 지금 탐색하고 있는 배열의 인덱스와 저장해야될 곳의 인덱스가 다르므로 저장해야 할 위치는 result라는 변수를 선언해서 기록한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Solution { public int removeDuplicates(int[] nums) { //배열의 길이가 0일때의 예외처리 if(nums.length==0) return 0; int result=1; for(int i=1 ; i<nums.length ; i++){ //요소가 중복값이 아닐 때에만 가져오고 리턴할 배열의 길이를 늘려줌 if(nums[i]!=nums[i-1]){ nums[result]=nums[i]; result++; } } return result; } } | cs |
배열을 처음부터 끝까지 탐색해야 하므로 시간복잡도는 O(n)이고 저장할 때 필요한 변수 하나만 선언하면 되므로 공간복잡도는 O(1)이다.
문제 출처 - https://leetcode.com/problems/remove-duplicates-from-sorted-array
'코딩문제(LeetCode) > Easy' 카테고리의 다른 글
[코딩연습] Power of Four 4의 거듭제곱인지 판별하기 (0) | 2019.03.18 |
---|---|
쉬프트연산자 (0) | 2019.03.18 |
[코딩연습] Single Number 하나뿐인 숫자 찾기 (2) | 2019.03.16 |
비트연산자란? (0) | 2019.03.16 |
[코딩연습] Search Insert Position 숫자를 넣을 자리 찾기 (0) | 2019.03.14 |