网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

[LeetCode]83.RemoveDuplicatesfromSortedList

83. Remove Duplicates from Sorted List

目前创新互联已为上1000家的企业提供了网站建设、域名、网站空间网站托管、企业网站设计、郏县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

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)对于空链表或者只有一个节点的链表不存在重复的问题,故可直接返回。

2)循环条件,当节点为最后一个节点,则无需继续比较了。因为之前的比较是当前节点和后一节点进行的。所以最后一个节点已经参与过比较了。无需继续。

3)若当前节点值等于后一节点值时,为*list赋值下一个节点即可。并及时释放删除节点的内存,防止出现内存泄漏。

4)若值不相等,list指向下个next即可。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) 
{
    if ( head == NULL || head->next == NULL )
    {   
        return head;
    }
    
    struct ListNode **list = &head;    
    while ( (*list)->next != NULL )
    {
        if ( (*list)->val == (*list)->next->val )
        {
            struct ListNode *delete = *list;
            (*list) = (*list)->next;
            free(delete);
        }
        else
        {
            list = &(*list)->next;
        }
    }
    return head;
}

注:

    1)*list作为头节点出现,表示头节点。

    2)*list作为其他节点时,*list具有两重意思。一是代表当前节点,二是对上一节点next的解引用。故为*list赋值即为给上一节点的next的赋值。


当前名称:[LeetCode]83.RemoveDuplicatesfromSortedList
链接URL:http://bjjierui.cn/article/pgdhse.html

其他资讯