알고리즘 : 중복 제거

문제 설명

정렬 된 배열에서 중복 항목 삭제 : 정렬 된 배열이 주어지면 반복되는 요소 제자리 에서 삭제하여 각 요소가 한 번만 나타나고 제거 된 배열의 새 길이를 반환해야합니다.

예 1 :
배열 nums = [1,1,2]가 주어지면 함수는 새 길이 2를 반환해야하며 원래 배열 nums의 처음 두 요소는 1, 2로 수정됩니다.
예 2 :
nums = [0,0,1,1,1,2,2,3,3,4]가 주어지면 함수는 새 길이 5를 반환해야하며 원래 배열 nums의 처음 5 개 요소는 0으로 수정됩니다. , 1, 2, 3, 4.

해결책

질문은 매우 분명합니다. 이것은 정렬 된 배열이기 때문에 이전 요소와 그 뒤의 각 요소를 비교하려면 이중 포인터를 사용합니다. 다른 값이있는 경우 후자를 할당합니다. 외부 루프의 번호를 첨자하고 마지막으로 외부 루프의 값을 출력합니다.

암호

		//双指针方法
        int[] nums = {
    
    0,0,1,1,1,2,2,3,3,4};
        if(nums==null || nums.length == 1){
    
    
            System.out.println(nums.length);
        }
        int i = 0;
        int j = 1;
        while(j<nums.length){
    
    
            if(nums[i]==nums[j]){
    
    
                j++;
            }else{
    
    
                i++;
                nums[i]=nums[j];
                j++;
            }
        }
        System.out.println(i+1);

요약하자면

이 질문은 현장에서만 작동 할 수 있기 때문에 제한적입니다. 그렇지 않으면 저장을 위해 hashMap을 도입 할 수 있습니다.이 경우 판단은 매우 간단합니다.

추천

출처blog.csdn.net/weixin_46687295/article/details/106450317