![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode之链表
explore翔
安徽某985小硕,记录日常学习生活,欢迎大家交流指教。
展开
-
合并链表和翻转链表
注意要在head前面先设一个空节点,防止头结点的next指针无法消去。其次就是先保存原来的指针next指向,不然无法找到下一个元素。其实链表之类的题目几乎都可以先把元素提取到数组,再移到链表的方法。如果一时搞不清楚指针的移动等,可以尝试。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]原创 2022-08-23 10:16:44 · 228 阅读 · 0 评论 -
18.删除链表节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.这题要注意的地方就是链表为空和删除头结点的情况。* Definition for singly-linked list. * struct ListNode { *原创 2021-03-29 21:13:40 · 63 阅读 · 0 评论 -
237删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.因为删除一个节点最简单的办法就是把指向它的指针指向它的next。然而我们只知道该节点,所以无法知道指向它的指针。我们通用的办法就是把该节点的值改为下一个点的值,然后从删除下一个点。node->next原创 2021-03-29 21:11:57 · 47 阅读 · 0 评论 -
21.合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]1、迭代法。新建一个头结点,从两个链表第一个开始比较。注意空的情况/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(原创 2021-03-28 18:47:18 · 610 阅读 · 0 评论 -
02 返回倒数第K个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 41.先遍历获取长度,在遍历到倒数第k个。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(原创 2021-03-27 20:34:24 · 81 阅读 · 0 评论