N

(Leet Code c++)Remove Duplicates from Sorted List 본문

Leet Code 알고리즘

(Leet Code c++)Remove Duplicates from Sorted List

naeunchan 2021. 7. 12. 10:08
728x90
반응형

83. Remove Duplicates from Sorted List

 

Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

 

Example 1:

Input: head = [1,1,2] Output: [1,2]

Example 2:

Input: head = [1,1,2,3,3] Output: [1,2,3]

 

Constraints:

  • The number of nodes in the list is in the range [0, 300].
  • -100 <= Node.val <= 100
  • The list is guaranteed to be sorted in ascending order.

주어진 ListNode를 이용해 중복되는 숫자를 제거한다.

현재 위치를 나타내는 current 리스트 노드와 current와 다음 숫자가 중복되는지 확이하기 위한 next 리스트 노드를 이용한다.

 

current가 NULL이 아닐 때까지 반복.

만약 current->next가 NULL이 아닌 경우 숫자가 있다는 뜻이므로, 중복되는 숫자가 있는지 확인하는 절차가 필요하다.

 

이를 위해 next 리스트 노드를 사용.

next 또한 NULL이 아닐 때까지 반복한다.

current->val과 next->val을 비교하여 같은지 확인한다.

 

만약 같다면 next를 다음 리스트 노드로 이동시켜 중복되는 숫자는 연결되지 않도록 한다.

같지 않다면 break하여 current->next를 next와 연결시켜 주면 된다.

 

그리고 current도 다음 리스트 노드로 이동하여 반복하면 끝이다!

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode * current = head;
        
        while(current != NULL){
            if(current->next != NULL){
                ListNode * next = current->next;
                
                while(next != NULL){
                    if(current->val == next->val){
                        next = next->next;
                    }
                    else{
                        break;
                    }
                }
                current->next = next;
            }
            current = current->next;
        }
        
        return head;
    }
};
728x90
반응형

'Leet Code 알고리즘' 카테고리의 다른 글

(Leet Code c++)Merge Sorted Array  (0) 2021.07.13
(Leet Code c++)Binary Tree Inorder Traversal  (0) 2021.07.12
(Leet Code c++)Climbing Stairs  (0) 2021.07.12
(Leet Code c++)Sqrt(x)  (0) 2021.07.09
(Leet Code c++)Add Binary  (0) 2021.07.09