LeetCodeベース-チェーン表-重複点の削除

1737 ワード

シングルチェーンテーブルのデータ構造:
 //Definition for singly-linked list.
 public class ListNode 
 {
     public int val;
     public ListNode next;
     public ListNode(int x) { val = x; }
 }
考え方:比較的簡単で、点を巡回します.現在の点が次の点の値と同じであれば、次の点を削除します.注意:
  • 頭の結点または頭の結点の次の結点が空いている場合.
  • 番目のn番目の結点とn+1、n+2番目の結点とが同じ場合、これらの2つの結点を全部削除する必要がある
  • .
        public ListNode DeleteDuplicates(ListNode head) {
            if(head == null || head.next == null)
            {
                return head;
            }
            ListNode runNode = head;
            while(runNode != null && runNode.next != null)
            {
                if(runNode.val == runNode.next.val)
                {
                    runNode.next = runNode.next.next;
                }
                else
                {
                    //    ,     2   ,
                    //         ,                    
                    runNode = runNode.next;
                }           
            }
            return head;
        }