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

【一天一道LeetCode】#83. Remove Duplicates from Sorted List

时间:2016-06-06 17:05:12      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

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.

(二)解题

题目大意:删除一个链表中重复的节点,注意这里重复的节点需要保留一个。与【一天一道LeetCode】#82. Remove Duplicates from Sorted List II不同之处就在于此!

解题思路:用一个指针p遍历整个链表,每次遍历到一个节点,就创建一个临时指针ptmp往后查找与它相同的节点,直到找到一个与它不同的节点,然后把p的next指向ptmp,再让p从ptmp向后继续遍历。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode* p = head;
        while(p!=NULL)
        {
            ListNode* pnext = p;
            while(pnext!=NULL&&pnext->val==p->val) {//一直往后查找,知道找到一个不相同的节点
                pnext=pnext->next;
            }
            p->next = pnext;//将p的next指向pnext
            p = pnext;//从pnext继续向后遍历
        }
        return head;
    }
};

【一天一道LeetCode】#83. Remove Duplicates from Sorted List

标签:

原文地址:http://blog.csdn.net/terence1212/article/details/51596104

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