package suanfa.list;

/**

  • 链表删除重复

  • /
    public class DeleteDuplicates {

    public static void main(String[] args) {

      ListNode listNode1 = new ListNode();
      ListNode listNode2 = new ListNode();
      ListNode listNode3 = new ListNode();
      ListNode listNode4 = new ListNode();
      ListNode listNode5 = new ListNode();
    
      listNode1.setVal(1);
      listNode1.setNext(listNode2);
    
      listNode2.setVal(2);
      listNode2.setNext(listNode3);
    
      listNode3.setVal(2);
      listNode3.setNext(listNode4);
    
      listNode4.setVal(3);
      listNode4.setNext(listNode5);
    
      listNode5.setVal(4);
    
      ListNode result = deleteDuplicates(listNode1);

    }

    public static ListNode deleteDuplicates(ListNode head) {

      ListNode current = head;
      ListNode pre = current;
      /**
       * 如果当前元素和下一个元素的值不相同,当前元素向下移动一个
       * 如果当前元素和下一个元素的值相同,当前元素向下移动两个
       */
      while (current != null && current.next != null) {
          if (current.val != current.next.val) {
              current = current.next;
          } else {
              current.next = current.next.next;
          }
      }
    
      return pre;

    }

    static class ListNode {

      int val;
      ListNode next;
    
      public int getVal() {
          return val;
      }
    
      public void setVal(int val) {
          this.val = val;
      }
    
      public ListNode getNext() {
          return next;
      }
    
      public void setNext(ListNode next) {
          this.next = next;
      }

    }
    }