高级农民
- 积分
- 1220
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2017-8-24
- 最后登录
- 1970-1-1
|
本帖最后由 akdhfikbk 于 2019-11-9 04:45 编辑
换了个思路,用了三个指针,可是最后尾部出现duplicates的话,fast已经不能进入while循环了
在不改变整体logic下 还有救吗目前问题是:
- public ListNode deleteDuplicates(ListNode head) {
- //corner case
- ListNode dummy= new ListNode(0);
- dummy.next=head;
- ListNode pre=dummy;
- ListNode slow=head;
- ListNode fast=head;
- while(fast!=null){
- //[1,1]不可以
- //因为fast会出界,导致最后的duplicates进入不了while循环
- if(pre.val!=slow.val && slow.val== fast.val){
- fast=fast.next;
- }else if(pre.val!=slow.val && slow.val!= fast.val){
- if(slow.next!=fast){
- pre.next=fast;
- slow=fast;
- // fast=fast.next;
- }else{
- pre=slow;
- slow=fast;
- // fast=fast.next;
- }
-
- }
- }
- return dummy.next;
- }
复制代码
|
|