一亩三分地

 找回密码 注册账号

扫描二维码登录本站

BBS
指尖新闻
Offer多多
Salarytics
Learn
Who's Hiring?
疫情动态
Instant
客户端
微信公众号
扫码关注公众号
留学申请公众号
扫码关注留学申请公众号
Youtube频道
留学博客
关于我们
查看: 329|回复: 4
收起左侧

[Leetcode] leetcode 203断开链接后为甚不能直接退出循环

[复制链接] |试试Instant~ |leetcode, 刷题
我的人缘0

分享帖子到朋友圈
fish1994 | 显示全部楼层 |阅读模式
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (10)
 
 
0% (0)    👎

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

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

x
leetcode 203这道linked list题有一个不太懂的地方,先上代码
[Bash shell] 纯文本查看 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if(head == null) return head;
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode pre = dummy;
        ListNode cur = head;
        while(cur != null) {
            if(cur.val == val) {
                pre.next = cur.next;
                break;
            } else {
                pre = pre.next;
            }
            cur = cur.next;
        }
        return dummy.next;
    }
}



觉得很困惑的地方是当cur的值与期待值相同时,把pre的next连上cur的next,按理说我们就可以break这个循环直接返回dummy.next了,为什么我加上break答案就不对,去掉break让循环进行到底就对了呢...

上一篇:请教:关于np完全问题
下一篇:求推荐针对刷题的视频课
我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   98% (96)
 
 
1% (1)    👎
同问,mark一下
回复

使用道具 举报

我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   67% (196)
 
 
32% (93)    👎
是不是list里面有多个node值都为val需要删掉? break只删掉了一个就结束了。
回复

使用道具 举报

我的人缘0
337845818 2020-3-25 11:59:53 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   81% (777)
 
 
18% (174)    👎
你这个代码也太难理解。。

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if(head == null) return head;
        if(head.val == val) return removeElements(head.next, val);
        head.next = removeElements(head.next, val);
        return head;
    }
}
回复

使用道具 举报

我的人缘0
337845818 2020-3-25 12:08:10 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   81% (777)
 
 
18% (174)    👎
你的想法
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummy = new ListNode(0), next = dummy;
        while(head != null)
        {
            if(head.val != val)
            {
                next.next = head;
                next = next.next;
            }
            head = head.next;
        }
        next.next = null;
        return dummy.next;
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://pay.1point3acres.com/tools/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|||一亩三分地

GMT+8, 2020-6-1 12:10

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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