码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】Remove Duplicates from Sorted List (easy)

时间:2015-01-18 21:00:44      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

 

思路:

简单题,没什么好说的。

class Solution {
public:
    ListNode *deleteDuplicates(ListNode *head) {
        if(head == NULL)
            return NULL;

        ListNode * ans = head;
        ListNode * anscur = ans; //记录答案链表的最后一个指针
        ListNode * cur = head->next; //记录判断的是原链表中的哪一个指针
        while(cur != NULL)
        {
            if(anscur->val != cur->val) //只有值变化的时候才把指针接到ans链表后面 节省操作
            {
                anscur->next = cur;
                anscur = anscur->next;
            }
            cur = cur->next;
        }
        anscur->next = NULL; //防止最后的指针是重复的,给ans结尾
        return ans;
    }
};

 

大神的代码更加简洁, 没有必要新建一个头结点,就用原来的头结点就好。

class Solution {
public:
    ListNode *deleteDuplicates(ListNode *head) {
    if(NULL == head) return head;

    ListNode *cur = head, *nxt = head->next;
    while (nxt) {
        if (cur->val != nxt->val) 
            cur = cur->next = nxt;
        else if (!nxt->next)
            cur->next = nxt->next;
        nxt = nxt->next;
    }

    return head;
}
};

 

【leetcode】Remove Duplicates from Sorted List (easy)

标签:

原文地址:http://www.cnblogs.com/dplearning/p/4232188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!