![](https://img-blog.csdnimg.cn/357ba6a753cd48c7afbe0991be1a6bdf.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
力扣刷题笔记——链表
文章平均质量分 54
在力扣的刷题笔记,关于链表的一些题
四维sun
一名努力学习的程序媛!
展开
-
力扣刷题1290——二进制链表转整数
题目:给你一个单链表的引用结点head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)方法1解题思路:要将一个二进制链表转为十进制,我们知道二进制转十进制时,需要知道二进制数的个数n,然后遍历二进制数,第n位二进制数字a转为十进制为a*2^(n-1),所以我们要先遍历一...原创 2021-12-08 20:54:53 · 130 阅读 · 0 评论 -
力扣刷题82——删除排序链表中的重复元素
题目:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。示例 :输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]解题思路:给定的链表是排好序的,因此我们只需一次遍历就可以删除重复元素,由于链表头节点有可能被删除,所以我们使用虚拟头节点指向链表头节点。我们用指针cur指向虚...原创 2021-12-06 21:12:22 · 206 阅读 · 0 评论 -
力扣刷题2——两数相加
题目:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-...原创 2021-12-05 16:19:10 · 129 阅读 · 0 评论 -
力扣 面试题02.01——移除重复节点
题目:编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]算法思路: 83——移除链表重复元素,题目中说明是排序链表,所以我们在做的时候用了双指针,通过比较相邻两个节点的值是否相等来判断要不要删除。 本题要移除的是未排序链表的重复节点,所以我们在比较的时候不能只比较相邻两个节点的val值了,要和其后面的节点值都比较,然后把后面的和该节点val值相同的节点...原创 2021-12-05 10:18:46 · 550 阅读 · 0 评论 -
力扣刷题142——环形链表II
题目:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例:输入:head = [3,2,0,-4], pos = 1输出:返回索引...原创 2021-12-04 20:30:27 · 119 阅读 · 0 评论 -
力扣刷题19-—删除链表的倒数第N个节点
题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]解题思路: 对于删除链表节点此类的题目,我们通常用虚拟头节点的方法,因为如果不用虚拟头结点的方法的话,我们要删除的节点如果是头节点的话,就需要特殊处理,而有了虚拟头节点的话,我们要删除头节点,直接使newHead->next=newHead->next->next即可。新建一个...原创 2021-12-03 22:45:27 · 624 阅读 · 0 评论 -
力扣刷题160——相交链表
题目:给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。示例:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3输出:Inter...原创 2021-12-01 22:16:17 · 305 阅读 · 0 评论 -
力扣刷题876——链表的中间节点
题目: 给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, an...原创 2021-12-01 17:32:32 · 431 阅读 · 0 评论 -
力扣刷题83——删除排序链表中的重复元素
题目:存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。示例:输入:head = [1,1,2]输出:[1,2]解题思路:要删除重复元素,我们需要记录节点的上一节点,所以采用双指针的解法,定义两个指针p和pre都从链表head开始,在后面遍历数组的过程中,使得pre记录p的前一个节点,当遇到p->val与其前一个节点的值比较,当p->val==pre...原创 2021-12-01 17:12:51 · 314 阅读 · 0 评论 -
力扣刷题剑指offer06——从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例:输入:head = [1,3,2]输出:[2,3,1]方法1---链表转数组,然后反转思路:可以先将链表转为数组,然后用双指针的方法反转数组代码:classSolution{public:vector<int>reversePrint(ListNode*head){ListNode*p=head;...原创 2021-12-01 17:09:22 · 260 阅读 · 0 评论 -
力扣刷题234——回文链表
题目给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。示例输入:head = [1,2,2,1]输出:true方法1——将链表转换为数组解题思路 想到我们在做数组的题目的时候也遇到过判断字符串回文的题目,使用双指针,i指向字符串第一个字符,j指向字符串最后一个字符,然后比较两个字符是否相等,不相等就返回false,相等就继续比较i++和j--指向的字符,遍历完则返回true。...原创 2021-11-29 23:35:34 · 131 阅读 · 0 评论 -
力扣刷题141--环形链表
力扣141--环形链表原创 2021-11-29 20:20:21 · 99 阅读 · 0 评论 -
力扣刷题206--反转链表
题目:给你单链表的头节点head,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]解题思路:我们要反转链表,由于是单链表,所以要在之前存储其前一个节点,所以我们用双指针的做法,新建两个节点p和pre,p指向head,pre表示p的前一个节点,在遍历链表的过程中,由于我们要改变p->nexts使其指向的是其前一个节点,所以在遍历链表的过程中,我们需要新建一个节点next来记录p->next,然后改变...原创 2021-11-29 21:12:16 · 279 阅读 · 0 评论