📣 独立日限时特惠: VIP通行证立减$68
查看: 871| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] lc82如果我非要用三个指针的话

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
大佬们好,
如果这道题我非要用next作为第三个指针的话,是不是真的行不通?
边界条件到底要怎么写啊?head到底怎么动?
这个是很明显的outOfBoundary,我也知道,不过我就想用next指针


下面是我的代码,请大佬赐教
  1. public static ListNode deleteDuplicates(ListNode head) {
  2.                 if(head==null || head.next==null) return head;
  3.                 ListNode dummy= new ListNode(0);
  4.                 dummy.next=head;
  5.                 ListNode pre=dummy;
  6.                 ListNode next=head.next;
  7.                 while(head!=null && next!=null ) {
  8.                         if(head.val==next.val) {
  9.                                 int samNum=head.val;
  10.                                 while(next!=null && next.val==samNum) {
  11.                                         pre.next=next.next;
  12.                     //这里要保证指针要走,否则无限循环(死循环)
  13.                     head=pre.next;
  14.                     next=head.next;
  15.                                 }
  16.                         }else {
  17.                                         pre=head;
  18.                     //同理,否则无限循环
  19.                 head=head.next;
  20.                 next=head.next;
  21.                                 }
  22.             // head=head.next;
  23.                         }
  24.                 return dummy.next;
  25.                 }
复制代码



上一篇:请教一道MS的OA题目
下一篇:G家 generating maze这道高频DFS就够吗
🔗
 楼主| akdhfikbk 2019-11-9 04:14:45 | 只看该作者
全局:
本帖最后由 akdhfikbk 于 2019-11-9 04:45 编辑

换了个思路,用了三个指针,可是最后尾部出现duplicates的话,fast已经不能进入while循环了
在不改变整体logic下   还有救吗目前问题是:

  1. public ListNode deleteDuplicates(ListNode head) {
  2.         //corner case
  3.         ListNode dummy= new ListNode(0);
  4.         dummy.next=head;
  5.         ListNode pre=dummy;
  6.         ListNode slow=head;
  7.         ListNode fast=head;
  8.         while(fast!=null){
  9.             //[1,1]不可以
  10.             //因为fast会出界,导致最后的duplicates进入不了while循环
  11.             if(pre.val!=slow.val && slow.val== fast.val){
  12.                 fast=fast.next;
  13.             }else if(pre.val!=slow.val && slow.val!= fast.val){
  14.                 if(slow.next!=fast){
  15.                     pre.next=fast;
  16.                     slow=fast;
  17.                     // fast=fast.next;
  18.                 }else{
  19.                     pre=slow;
  20.                     slow=fast;
  21.                     // fast=fast.next;
  22.                 }
  23.                
  24.             }
  25.         }
  26.         return dummy.next;
  27.     }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表