随笔分类 - 链表
摘要:题目来源 面试题 02.05. 链表求和 题目详情 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入: (7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输
阅读全文
摘要:题目来源 86. 分隔链表 题目描述 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入: head = [1,4,3,2,5,2], x = 3
阅读全文
摘要:题目来源 445. 两数相加 II 题目详情 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入: l1 = [7,2,4,3], l2 = [5
阅读全文
摘要:题目来源 114. 二叉树展开为链表 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入
阅读全文
摘要:题目来源 328. 奇偶链表 题目详情 给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。 你必须在
阅读全文
摘要:题目来源 460. LFU 缓存 题目描述 请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象 int get(int key) - 如果键 key 存在于缓存中,
阅读全文
摘要:题目来源 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,
阅读全文
摘要:题目来源 92. 反转链表 II 题目详情 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入: head = [1,2,3,4,5], left
阅读全文
摘要:题目来源 141. 环形链表 题目详情 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不
阅读全文
摘要:题目来源 补充题1. 排序奇升偶降链表 题目详情 本文章是对企业题库CodeTop[1]的补充,汇总那些在Leetcode上找不到的面试高频题。 来看一下几篇面经的原文叙述 链表,奇数位置按序增长,偶数位置按序递减,如何能实现链表从小到大?(2020.10 字节跳动-后端)[2] 奇偶生序倒序链表的
阅读全文
摘要:题目来源 138. 复制带随机指针的链表 题目详情 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 ne
阅读全文
摘要:82. 删除排序链表中的重复元素 II LeetCode_82 题目描述 题解分析 解法一:复杂解法 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Li
阅读全文
摘要:143. 重排链表 LeetCode_143 题目描述 题解分析 本题的解题核心是需要找到原链表的中间节点,然后将中间节点之后的链表进行反转。 如何找到中间节点呢?这里可以使用快慢指针的思想,通过设置slow和fast指针,当fast走到尾结点时,slow指针敲好指向中间节点。 这里的反转链表操作比
阅读全文
摘要:题目来源 LeetCode_234_回文链表 题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入: head = [1,2,2,1] 输出: true 示例 2: 输入: head = [1,2] 输出:
阅读全文
摘要:25. K 个一组翻转链表 25. K 个一组翻转链表 题目描述 题解分析 这题的主要解决思路就是链表的翻转,关键是要找到每次翻转的头结点和尾结点。 外层是一个while(true)循环,内存找到本次需要翻转的k个结点的左右边界。 代码实现 解法一:迭代法 /** * Definition for
阅读全文
摘要:83. 删除排序链表中的重复元素 LeetCode_83 题目描述 相似题目 83. 删除排序链表中的重复元素 + 链表 + 判重 82. 删除排序链表中的重复元素 II + 链表 + 判重 题解分析 解法一:复杂解法 /** * Definition for singly-linked list.
阅读全文
摘要:206. 反转链表 LeetCode_206 题目详情 解法一:迭代法 package com.walegarrett.interview; /** * @Author WaleGarrett * @Date 2021/2/22 22:30 */ import java.util.List; /**
阅读全文
摘要:题目来源 LeetCode-146 题目描述 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void
阅读全文