关闭

LeetCode 之 Remove Duplicates from Sorted List

标签: leetcode
711人阅读 评论(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.

本题就是要删除所有的重复的数字,很简单,看有的人做的是看一个node是否和前一个相等,要是相等就删除,这得判断n次啊,直接用俩指针指着不就行了么。。。ok,我的解题思路:

1用一个指针current指向某个数字区间的第一个数字,然后判断current是否和head相等,如果不等就把head加入新的链表;如果相等,就把head指向next

     

2 小技巧,最开始把result指向一个new 的node,然后依次向后面加node,最后返回result->next就行

代码(88ms):

class Solution {
public:
    ListNode *deleteDuplicates(ListNode *head) {
        ListNode * result = new ListNode(-1);
        ListNode * tail = result;
        ListNode * current = NULL;
        while(head){
            if(current==NULL || head->val != current->val){
                ListNode *node  = new ListNode(head->val);
                current=head;
                tail->next = node;
                tail=tail->next;
            }
            head = head->next;
        }
        return result->next;
    }
};

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:96204次
    • 积分:2221
    • 等级:
    • 排名:第17092名
    • 原创:122篇
    • 转载:4篇
    • 译文:1篇
    • 评论:27条
    文章分类
    最新评论