题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

思路:
由于链表中的数字是有序排列的,所以相同的数字一定是排在一起的,因此在寻找重复数字的时候只需要对比相邻两数的值是否相等即可,而对于链表,删除数据就是让指针指向改变,伪代码就是
head->next=head->next->next;
但是需要注意的点是,重复数字不一定只有两个,所以删除数据和指针移位这两个操作不能同时进行,因为同时进行只能删除一个数据。
代码如下:

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if(head==NULL)
        {
            return NULL;
        }
        if(head!=NULL && head->next==NULL)
        {
            return head;
        }
        ListNode* temp=head;
        while(temp!=NULL && temp->next!=NULL)
        {
            if(temp->val==temp->next->val)
            {
                ListNode* pCurrent = temp->next;
                temp->next=pCurrent->next;//删除数据
            }
            else//一定要注意这一点
            {
                temp=temp->next;//指针移动
            }

        }
        return head;
    }
};
牛客刷题记录 文章被收录于专栏

记录自己的刷题记录,刷过的题的解法

全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务