-
[LeetCode/JAVA] 26. Remove Duplicates from Sorted ArrayETC/Algorithm 2023. 8. 24. 16:30
문제
감소하지 않는 순서로 정렬된 정수형 배열 nums이 주어지고, 이전 풀이와 같이 in-place 방식으로 중복된 요소들을 제거해야 한다.
또한 각각의 고유한 요소는 한 번만 나와야한다. 그리고 이미 만들어져있던 순서대로 감소하지 않는 관계를 유지해야하고, 반환값으로 고유한 요소의 길이를 반환해야한다.풀이
시작 인덱스 0부터 시작해서 일일이 비교한 다음 다른 값이 나오게 된다면 그 때 다른 값을 순서대로 앞으로 당겨서 넣어주면 될 것이다. 이전 LeetCode 문제들과 비슷한 유형이다.
코드
class Solution { public int removeDuplicates(int[] nums) { // 시작 인덱스는 0부터 시작한다. int pos = 0; // nums 배열의 전체를 일일이 반복한다. for(int i = 0; i < nums.length; i++){ // 만약 시작 인덱스와 현재 반복중인 배열의 요소와 다르다면? if(nums[pos] != nums[i]){ // 시작 인덱스 바로 다음 인덱스에 반복중인 배열의 요소를 이동시킨다. nums[++pos] = nums[i]; } } // nums의 길이는 최소 0부터 시작되므로, 이동시킨 횟수가 유효한 배열의 총 길이이다. return pos + 1; } }