Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode Remove Duplicates from Sorted List

Leetcode algorithms 第 83 题:Remove Duplicates from Sorted List。

题目

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.

解答

移除链表中出现次数大于1的元素,使得所有元素都只出现一次。基本思想是从头到尾遍历链表,如果某个节点的值与其后续节点的值相同,则删除后续节点,然后指针不前进,继续比较该节点的值和其其下下个节点的值。

具体代码如下:

/**
 * 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) {
        for (ListNode *p = head; p && p->next;) //保证p有下一个节点
            if (p->val == p->next->val) //p和下一个节点值相同
            {
                ListNode *tem = p->next->next; //保存下下个节点
                delete p->next; //删除下一个节点
                p->next = tem; //修改指针,继续遍历下下个节点
            }
            else
                p = p->next;
        return head;
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论