【牛客题霸题解】删除有序链表中重复的元素

删除有序链表中重复的元素

http://www.nowcoder.com/questionTerminal/c087914fae584da886a0091e877f2c79

因为链表本身有序,所以可以从第二个结点看到最后一个结点,如果这个结点和前一个结点相同,就删掉这个结点。
因为给出的链表是单链表,所以前一个结点需要我们自己记录一下。
c++

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if(head == NULL){return head;}
        ListNode* now = head->next;
        ListNode* pre = head;
        ListNode* next = NULL;
        while(now!=NULL)
        {
            next = now->next;
            if(now->val == pre->val)//相等,删除这个结点。注意这时pre不用更新。
            {
                pre->next = next;
                delete now;
                now = next;
            }
            else{
                pre = now;
                now = next;
            }
        }
        return head;
    }
};

java

import java.util.*;

public class Solution {
    public ListNode deleteDuplicates (ListNode head) {
        if(head == null){return head;}
        ListNode now = head.next;
        ListNode pre = head;
        ListNode next = null;
        while(now!=null)
        {
            next = now.next;
            if(now.val == pre.val)//相等,删除这个结点。注意这时pre不用更新。
            {
                pre.next = next;
                now = next;
            }
            else{
                pre = now;
                now = next;
            }
        }
        return head;
    }
}

python

class Solution:
    def deleteDuplicates(self , head ):
        # write code here
        if head == None:
            return head
        now = head.next
        pre = head
        Next = None
        while now!=None:
            Next = now.next
            if now.val == pre.val:
            #相等,删除这个结点。注意这时pre不用更新。
                pre.next = Next
                now = Next
            else:
                pre = now
                now = Next
        return head;
牛客题霸题解 文章被收录于专栏

QAQ

全部评论

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务