zoukankan      html  css  js  c++  java
  • 删除链表中重复的结点

    offer_56

    概要:删除链表中重复的结点

    题目描述:

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    /*
     public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public ListNode deleteDuplication(ListNode pHead)
        {
    
            if(pHead == null || pHead.next == null) return pHead;
            //防止头结点被删掉,要创建一个新的结点指向头结点
            //相当于在原来的链表上多加了一个结点放在头结点的前边
            ListNode head =  new ListNode(0);
            head.next  = pHead;
            
            
            //前结点
            ListNode pre = head;
            //当前结点
            ListNode cur = pHead;
            
            
            //当前结点与当前结点的下一个结点存在
            while(cur != null && cur.next != null)
            {
                if(cur.val == cur.next.val){//如果当前结点的值与当前结点的下一个结点的值相同
                
                    //再判断当前结点的下一个结点是否存在,并且当前结点的值与当前结点的下一个结点的值是否相同
                    while(cur.next != null && cur.val == cur.next.val){
                        //如果相同,就把当前结点往后移动;直到当前结点的值与下一个结点的值不同才不移动当前结点位置
                        cur = cur.next;
                    }
                    //已经把与当前结点所有的相同值的结点都划过了,而且当前结点指向的是  与当前结点值相同的结点的 最后一个结点
                    //把前结点的值指向换成当前结点的下一个,就相当于删除掉了所有的与当前结点相同的值的结点,并且包含当前结点的值
                    pre.next = cur.next;
                    //当前结点后移
                    cur = cur.next;
                }else{//如果当前结点的值与当前结点的下一个结点的值不同
                  //前结点换成当前结点
                    pre = cur;
                    //当前结点往后移动
                    cur = cur.next;
                }
            }
            //因为head是自定义的头结点,要返回原来的链表,应改return的是下一个
            return head.next;
            
        }
    }
    

  • 相关阅读:
    hihocoder 1049 后序遍历
    hihocoder 1310 岛屿
    Leetcode 63. Unique Paths II
    Leetcode 62. Unique Paths
    Leetcode 70. Climbing Stairs
    poj 3544 Journey with Pigs
    Leetcode 338. Counting Bits
    Leetcode 136. Single Number
    Leetcode 342. Power of Four
    Leetcode 299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/SunAlbert/p/13475382.html
Copyright © 2011-2022 走看看