博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode::Remove Duplicates from Sorted List II [具体分析]
阅读量:6610 次
发布时间:2019-06-24

本文共 1397 字,大约阅读时间需要 4 分钟。

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

这道题目是前一个题目的进化版,因为反复了的那个数字会被所有删去,这里面临一个多引入一个指针,来表征须要删除的节点的前一个节点,再多引入一个布尔值,
来标记究竟这个数字是不是反复了;假设反复,位于pos 以及 next_pos之间的节点必须都删除(闭区间),pre_pos 非常显然原地不动,当发现不是反复,那么pre_pos
向前走一格。
一个注意点:在思考链表类问题的时候,必须非常明白每一个指针标志着什么,而且须要再用到诸如a->next  a->val时特别确信a != NULL, 这个必须考虑到边界条件,如
何时走到了最后,或者链表仅仅有一个节点或者没有节点,出现了特殊情况等等,这个是RUNTIME ERROR的关键问题

ListNode *deleteDuplicates(ListNode *head) {
if (head == NULL || head->next == NULL)            return head;                    bool isDup;        ListNode *pos = head, *next_pos = head;                    ListNode *pre_pos = new ListNode(0);        ListNode *new_head = pre_pos;        pre_pos->next = head;                while (next_pos != NULL)        {            next_pos = next_pos->next;            isDup = false;            while (next_pos != NULL && pos->val == next_pos->val)            {                isDup = true;                next_pos = next_pos->next;            }            if (isDup)            {                pre_pos->next = next_pos;                pos = next_pos;            }            else            {                pre_pos = pre_pos->next;                pos = pos->next;            }        }        return new_head->next;    }};

转载地址:http://boiso.baihongyu.com/

你可能感兴趣的文章
28. extjs中Ext.BLANK_IMAGE_URL的作用
查看>>
Android 控件属性
查看>>
【244】◀▶IEW-Unit09
查看>>
处理有外键约束的数据
查看>>
par函数的xaxt函数-控制x轴刻度的显示
查看>>
Unity5.1 新的网络引擎UNET(十五) Networking 引用--中
查看>>
用任务计划管理计划任务对付任务计划-禁止WPS提示升级
查看>>
Android——SlidingMenu学习总结
查看>>
React-Native 之 GD (十六)首页筛选功能
查看>>
UI概念体系要素
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
performSelectorInBackground V.S detachNewThreadSelector?
查看>>
linux,Centos,bash: service: command not found
查看>>
【转】UIColor对颜色的自定义
查看>>
php编译报错 configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-...
查看>>
asp.net后台进程做定时任务
查看>>
Ural_1671. Anansi's Cobweb(并查集)
查看>>
Web墨卡托坐标与WGS84坐标互转
查看>>
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>