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

来源:互联网 发布:js原型链最上层对象是 编辑:程序博客网 时间:2024/06/04 17:58

一天一道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;    }};
1 0
原创粉丝点击