力扣链表
SMELLY CAT23.8
a...
whatever...
hi~!
展开
-
链表常用方法
头插法:struct LinkList List_HeadInsert(struct LinkList &L){LNode *s;int x;L=(struct ListNode)malloc(sizeof(struct ListNode));L->next=NULL;while(x!=999){s=(struct ListNode*)malloc(sizeof(struct ListNode));s->data=x;s->next=L->next;L原创 2022-03-21 13:07:06 · 755 阅读 · 0 评论 -
力扣1290.二进制链表转整数
问题描述:给你一个单链表的引用结点head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]输出:18880.原创 2022-03-12 22:23:15 · 114 阅读 · 0 评论 -
力扣203.移除链表的元素
问题描述:给你一个链表的头节点 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 <= N..原创 2022-03-11 22:20:27 · 1918 阅读 · 0 评论 -
力扣141.环形链表
问题描述:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一原创 2022-03-11 22:08:36 · 64 阅读 · 0 评论 -
力扣83.删除重复的元素
问题描述:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列代码:struct ListNode *deleteDuplicate.原创 2022-03-11 21:57:36 · 190 阅读 · 0 评论 -
力扣328.奇偶链表
问题描述:给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。示例 1:输入: head = [1,2,3,4,5]输出:[1,3,5,2,4]示例 2:输入: head = [2,1,3,5,6,4,7.原创 2022-03-10 23:33:53 · 454 阅读 · 0 评论 -
剑指77.链表排序
问题描述:给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围[0, 5 * 104]内-105<= Node.val <= 105解题思路:1.利用快慢指针找到链表的中点,以此进行递归;...原创 2022-03-09 22:34:28 · 209 阅读 · 0 评论 -
力扣86.分割链表
问题描述:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]提示:链表中节点的数目在范围 [0, 200] 内-100 <= Node.val <=.原创 2022-03-07 23:00:54 · 254 阅读 · 0 评论 -
剑指27.回文链表
问题描述:给定一个链表的 头节点 head ,请判断其是否为回文链表。如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。示例 1:输入: head = [1,2,3,3,2,1]输出: true示例 2:输入: head = [1,2]输出: false提示:链表 L 的长度范围为 [1, 105]0<= node.val <= 9问题解决思想:1.找到链表中心;2.反转中心之后的子链表进行反转;3.对比这两个部分的..原创 2022-03-06 22:31:30 · 369 阅读 · 0 评论 -
力扣26.重排链表
问题描述:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入: head = [1,2,3,4]输出: [1,4,2,3]示例 2:输入: head = [1,2,3,4,5]输出: [1,5,2,4,3]提示:链表的长度范围为 [...原创 2022-03-05 23:29:50 · 570 阅读 · 0 评论 -
剑指21.删除链表倒数第n个结点
问题描述:给定一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz代码实现...原创 2022-03-04 23:11:40 · 626 阅读 · 0 评论 -
两个链表的第一个公共节点
问题描述:输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表原创 2022-03-03 20:28:19 · 107 阅读 · 0 评论 -
合并两个有序链表
问题描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000代码:(只提供思路)struct ListNode *mergeTwoists(struct ListNode *L1,struct ListNode *l2){//开辟一个struct ListNode原创 2022-03-03 18:17:46 · 253 阅读 · 0 评论 -
剑指24.反转链表
问题描述:给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000代码:struct ListNode* reverseList(struct .原创 2022-03-01 11:30:13 · 50 阅读 · 0 评论 -
剑指Offer18.删除链表中的结点
问题描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为1的第三个节点,那么在...原创 2022-03-01 11:12:12 · 73 阅读 · 0 评论 -
剑指Offer 06.从尾到头打印链表
问题描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000代码://使用栈的特点——先进后出,进行相关逆置int* reversePrint(struct ListNode* head,int *returnSize){int stack[10000];int top=0;struct ListNode *q=head;w.原创 2022-03-01 10:39:32 · 161 阅读 · 0 评论 -
力扣61.旋转链表
问题描述:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109代码:int GetLength(str.原创 2022-02-24 21:53:02 · 252 阅读 · 0 评论 -
力扣24.两两交换链表中的结点
问题描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100代码:struct ListNode* sw.原创 2022-02-22 22:51:09 · 339 阅读 · 0 评论 -
力扣21.合并两个有序链表&力扣23.合并K个升序链表
(一)问题描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非.原创 2022-02-22 22:03:33 · 113 阅读 · 0 评论 -
力扣19.删除链表的倒数第N个结点
题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas原创 2022-02-22 21:36:04 · 299 阅读 · 0 评论