Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode17|删除链表的节点

LeetCode17|删除链表的节点

作者头像
码农王同学
发布于 2020-08-12 07:30:14
发布于 2020-08-12 07:30:14
44600
代码可运行
举报
文章被收录于专栏:后端Coder后端Coder
运行总次数:0
代码可运行

1,问题简述

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

2,示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

3,题解思路

使用哨兵节点和HashSet集合进行操作。

4,题解程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.HashSet;
import java.util.LinkedHashSet;

public class DeleteNodeTest {
    public static void main(String[] args) {
        ListNode l1 = new ListNode(4);
        ListNode l12 = new ListNode(5);
        ListNode l13 = new ListNode(1);
        ListNode l14 = new ListNode(9);
        l1.next = l12;
        l12.next = l13;
        l13.next = l14;

        int val = 5;
        ListNode listNode = deleteNode(l1, val);
        System.out.println("listNode = " + listNode);
    }

    public static ListNode deleteNode(ListNode head, int val) {
        if (head == null) {
            return head;
        }
        HashSet<Integer> hashSet = new LinkedHashSet<>();
        ListNode temp = head;
        while (temp != null) {
            if (temp.val != val) {
                hashSet.add(temp.val);
            }
            temp = temp.next;
        }
        ListNode dummyNode = new ListNode(-1);
        ListNode tempNode = dummyNode;
        for (Integer num : hashSet
        ) {
            tempNode.next = new ListNode(num);
            tempNode = tempNode.next;
        }
        return dummyNode.next;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode142|移除重复节点
对于这道题而言,理解哨兵节点的设置,以及LinkedHashSet的作用就可以了。
码农王同学
2021/01/15
4710
LeetCode77|排序链表
有的时候自己写完整道题之后,确实不知道给你们说什么了,我觉得目前我输出的内容都是常规思路题,所以你懂吧,看懂代码的可以自己单独写写就可以了,具体的解题思路真的不知道怎么描述了。
码农王同学
2020/10/14
2860
LeetCode18|排序链表
1,问题简述 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 2,示例 输入: 4->2->1->3 输出: 1->2->3->4 3,题解思路 本题基于哨兵节点加上集合排序操作 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortListTest { public static void main(String[] arg
码农王同学
2020/08/12
3090
LeetCode18|排序链表
LeetCode122|删除排序链表中的重复元素II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
码农王同学
2020/10/27
3250
LeetCode16|两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
码农王同学
2020/08/12
3740
LeetCode16|两数相加
LeetCode155|移除链表元素
一个是基于哨兵节点的方式进行解决,另一个是基于java集合的方式来做,本质上还是一样的
码农王同学
2021/01/15
2890
搞定大厂算法面试之leetcode精讲15.链表
搞定大厂算法面试之leetcode精讲15.链表 视频讲解(高效学习):点击学习 目录: 1.开篇介绍 2.时间空间复杂度 3.动态规划 4.贪心 5.二分查找 6.深度优先&广度优先 7.双指针 8.滑动窗口 9.位运算 10.递归&分治 11剪枝&回溯 12.堆 13.单调栈 14.排序算法 15.链表 16.set&map 17.栈 18.队列 19.数组 20.字符串 21.树 22.字典树 23.并查集 24.其他类型题 链表操作如下图: 动画过大,点击查看 时间复杂度: prepend: O(1
全栈潇晨
2021/12/02
4660
剑指Offer LeetCode 面试题18. 删除链表的节点
输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2:
手撕代码八百里
2020/07/28
3510
leetcode链表之删除链表的节点
序 本文主要记录一下leetcode链表之删除链表的节点 OIP (45).jpeg 题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 ​ 返回删除后的链表的头节点。 ​ 注意:此题对比原题有改动 ​ 示例 1: ​ 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. ​ 示例 2: ​ 输入: head = [4,5,1,9], val
code4it
2020/09/12
6180
leetcode链表之删除链表的节点
LeetCode 203 & 237. Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
大学里的混子
2018/10/28
5080
LeetCode26|回文链表
这道题的解法虽然解法比较简单,但是耗时多,这里就不多说了,不过也通过了题目的测试用例,不知道后面有没有时间来做一下这个题的优化,目前这样的题都是采用很常规的思路来解的,如同功能需求一样,功能先做出来,优化可以放在后面功能做完再去优化,这也是自己的一点思考,后面自己确实要看下这方面的思路是否可以达到稍微优化
码农王同学
2020/08/25
2380
LeetCode26|回文链表
LeetCode106|从尾到头打印链表
这是自己写的第106篇leetcode题解,纯java语言编写,基本上就会提供一种思路进行解决,写到这里,自己主要是为了将以往做过的内容进行了回顾,没有新增的内容,利用自己的时间将做过的内容都以文章的形式进行输出
码农王同学
2020/10/27
2670
LeetCode115|删除排序链表中的重复元素
写这篇文章的时候是读了一点文章才来写的,主要无聊了,觉得写写内容吧,打发一下这个无聊的时间,因为短视频应用我基本上都卸载了,所以基本上不看了,那么就有了闲下来的时间去做一下自己比较喜欢的事情了,或许属于自己的爱好会一点点改变吧,这或许也是成长之后带给自己的一点内容思考,唠唠嗑而已
码农王同学
2020/10/27
2680
237 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。
木瓜煲鸡脚
2021/01/18
1.5K0
237 删除链表中的节点
LeetCode 图解 | 237.删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
五分钟学算法
2020/02/27
3170
LeetCode每日一练(两数之和)
题目很好理解,就是给你两个链表,比如243和564,需要逆序得到链表所代表的的数值,分别是342和465,将这两个数相加,得到结果807,再逆序存回一个链表并返回。
wangweijun
2022/01/10
2420
LeetCode每日一练(两数之和)
leecode刷题(20)-- 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
希希里之海
2019/03/08
7010
leecode刷题(20)-- 删除链表中的节点
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer(第 2 版)》通行全球的程序员经典面试秘籍。剖析典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。
用户8921923
2022/10/24
2790
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
Swift 删除链表中的节点 - LeetCode
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
韦弦zhy
2018/12/19
1.5K4
​LeetCode刷题实战21:合并两个有序链表
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/19
2730
相关推荐
LeetCode142|移除重复节点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验