알고리즘 단일 체인 테이블 중복 요소 삭제

1. 반복 되 는 요 소 를 삭제 하고 leetcode 제목 코드 를 유지 합 니 다.
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
     
    public ListNode deleteDuplicates(ListNode head) {
     
        if(head == null){
     
            return null;
        }
        ListNode newHead = head;
        while(head.next != null){
     
            if(head.val == head.next.val){
     
            	//    ,      ,    next      
                head.next = head.next.next;
            }else{
     
                head = head.next;
            }
        }
        return newHead;
    }
}

2. 중복 요 소 를 삭제 하고 모두 leetcode 문제 의 방향 을 유지 합 니 다. 이러한 단일 체인 표 의 삭제 문 제 를 만 나 고 모두 삭제 하면 기본적으로 보초병 노드 를 추가 할 수 있 습 니 다. next 는 현재 머리 결점 을 가리 키 며 머리 결점 도 삭제 하 는 것 을 피 할 수 있 습 니 다. 또한 보조 지침 을 추가 하면 코드 를 추가 할 수 있 습 니 다.
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
     
    public ListNode deleteDuplicates(ListNode head) {
     
        if(head == null){
     
            return null;
        }
        ListNode preHead = new ListNode(0);
        preHead.next = head;
        ListNode l1 = preHead;
        while(l1.next != null && l1.next.next != null){
     
            if(l1.next.val == l1.next.next.val){
     
                ListNode temp = l1.next;
                while(temp != null && temp.next != null && temp.val == temp.next.val){
     
                    temp = temp.next;
                }
                //temp            
                l1.next = temp.next;
            }else{
     
                l1 = l1.next;
            }
        }
        return preHead.next;
    }
}

좋은 웹페이지 즐겨찾기