前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >脚撕LeetCode(203)Easy

脚撕LeetCode(203)Easy

作者头像
JathonKatu
发布2021-06-10 01:35:57
2790
发布2021-06-10 01:35:57
举报
文章被收录于专栏:JathonKatu

题目地址:https://leetcode-cn.com/problems/remove-linked-list-elements/

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], val = 7 输出:[] 提示:列表中的节点在范围 [0, 104] 内 1 <= Node.val <= 50 0 <= k <= 50 https://leetcode-cn.com/problems/remove-linked-list-elements/

代码语言:javascript
复制
class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }
    ListNode(int val) {
        this.val = val;
    }
    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

第一次爆破法和官方方法出奇的一致,感觉这道题应该是简单到无可避免了

一、爆破法:

思路很简单,先创建一个头节点(反正最后都要删除的,这么做也省去了头节点的判断),他的next是传过来的head

然后双指针法,一个指向当前,一个指向next,然后不断的循环,条件是next部位null

循环体内如果判断next的val = 传来的val则this指向next的next,否则this =next,然后统一步骤next指向next的next,循环结束,返回我们创建的头节点的next

执行结果如下:

66 / 66 个通过测试用例

状态:通过

执行用时: 1 ms

内存消耗: 39.3 MB

代码语言:javascript
复制
public static ListNode removeElementsMe(ListNode head, int val) {
    ListNode newHead = new ListNode(-1, head);
    ListNode thisNode = newHead;
    ListNode nextNode = head;
    while (null != nextNode) {
        if (nextNode.val == val) {
            thisNode.next = nextNode.next;
        } else {
            thisNode = nextNode;
        }
        nextNode = nextNode.next;
    }
    return newHead.next;
}

评论区似乎找不到时间和空间更好的办法,就贴一个看起来没想到的思路好了

二、递归法

每个节点递归判断,不需要双指针法,但是时间和空间上反而比我的方法给评分低

执行结果:

66 / 66 个通过测试用例

状态:通过

执行用时: 1 ms

内存消耗: 39.6 MB

代码语言:javascript
复制
public ListNode removeElements(ListNode head, int val) {
    if (head == null)
        return null;
    head.next = removeElements(head.next, val);
    if (head.val == val) {
        return head.next;
    } else {
        return head;
    }
}

总结,可能是因为自己递归写的少,所以递归的思路并没有想到,但是虚拟头节点这个办法感觉很不错,可以躲避头节点的判断尴尬,总的来说算是有收获的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JathonKatu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档