自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 链表小结

LinkedList链表总结前言一、LinkedList(链表)1. 单向链表2. 双向链表3. 循环链表二、LinkedList(链表)相关题型及解法1. 单向链表2. 双向链表3. 循环链表总结前言List的两个重要实现类ArrayList和LinkedList各自的特点都是非常明显的。ArrayList的底层是数组,在逻辑上和物理上来说都是连续的,也就是说数组在内存上是存储在连续的空间里面的,这种存储的优势是通过index(索引)可以实现查找和随机访问,操作复杂度只是O(1)。但是对于插入和

2020-12-15 07:32:38 309 1

原创 [链表]leetcode1670-设计前中后队列

[链表]–设计前中后队列题目链接leetcode 1670.设计前中后队列题目请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。请你完成 FrontMiddleBack 类:FrontMiddleBack() 初始化队列。void pushFront(int val) 将 val 添加到队列的 最前面 。void pushMiddle(int val) 将 val 添加到队列的 正中间 。void pushBack(int val) 将 val 添加到队里的 最

2020-12-14 13:52:55 232

原创 [链表]leetcode237-删除链表中的节点

[链表]–删除链表中的节点题目链接leetcode 237.删除链表中的节点类似题目 相同题目面试题 02.03.删除中间节点题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。示例输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.输入:head = [4,5,1,9], node =

2020-12-14 12:03:58 118

原创 [链表]leetcode707-设计链表

[链表]–设计链表题目链接leetcode 707.设计链表题目设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的

2020-12-13 23:13:47 116 1

原创 [链表]leetcode25-K 个一组反转链表

[链表]–K 个一组反转链表题目链接leetcode 25.K 个一组反转链表题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->

2020-12-13 17:04:32 91

原创 [链表]leetcode23-合并 k 个升序链表

[链表]–合并 k 个升序链表题目链接leetcode 23.合并 k 个升序链表题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3-&g

2020-12-13 15:55:37 90

原创 [链表]leetcode1367-二叉树中的列表

[链表]–二叉树中的列表题目链接leetcode 1367.二叉树中的列表题目给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 True ,否则返回 False 。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。示例输入:head = [4,2,8], root = [1,4,4,null,2,2,null,1,null,6,8,n

2020-12-13 15:20:12 119

原创 [链表]leetcode1171-从链表中删去总和值为0的连续节点

[链表]–从链表中删去总和值为0的连续节点题目链接leetcode 1171.从链表中删去总和值为0的连续节点题目给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。你可以返回任何满足题目要求的答案。(注意,下面示例中的所有序列,都是对 ListNode 对象序列化的表示。)示例输入:head = [1,2,-3,3,1]输出:[3,1]提示:答案 [1,2,1] 也

2020-12-13 14:35:27 374

原创 [链表]leetcode1019-链表中的下一个更大节点

[链表]–链表中的下一个更大节点题目链接leetcode 1019.链表中的下一个更大节点题目给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, … 。每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val,那就有 j > i 且 node_j.val > node_i.val,而 j 是可能的选项中最小的那

2020-12-13 13:50:33 290

原创 [链表]leetcode817-链表组件

[链表]–链表组件题目链接leetcode 817.链表组件题目给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例输入: head: 0->1->2->3G = [0, 1, 3]输出: 2解释: 链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是

2020-12-13 12:56:35 207

原创 [链表]剑指Offer06-从尾到头打印链表

[链表]–从尾到头打印链表题目链接剑指Offer 06.从尾到头打印链表题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例输入:head = [1,3,2]输出:[2,3,1]解析又是反向输出?用栈!1压栈;2出栈;3.来一个装一个嘶…这时间39%玄乎了!再想想!代码实现public class Offer06 { /** * Definition for singly-linked list */ clas

2020-12-13 12:36:52 77

原创 [链表]leetcode1290-二进制链表转整数

[链表]–二进制链表转整数题目链接leetcode 1290.二进制链表转整数题目给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)输入:head = [0]输出:0输入:head = [1]输出:1输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,

2020-12-13 00:37:41 123

原创 [链表]leetcode430-扁平化多级双向链表-递归和迭代

[链表]–扁平化多级双向链表题目链接leetcode 430.扁平化多级双向链表题目多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例输入链表:输出:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null,11,

2020-12-13 00:00:05 108

原创 [链表]leetcode328-奇偶链表

[链表]–奇偶链表题目链接leecode 328.奇偶链表题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL输入: 2-&gt

2020-12-12 19:05:55 114

原创 [链表]leetcode138-复制带随机指针的链表

[链表]–复制带随即指针的链表题目链接leetcode 138.复制带随即指针的链表相同题目Offer 35.复杂链表的复制题目给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如

2020-12-12 18:35:39 197

原创 [链表]leetcode61-旋转链表

[链表]–旋转链表题目链接leetcode 61.旋转链表题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NU

2020-12-12 17:53:28 85

原创 [链表]leetcode24-两两交换链表中的节点

[链表]–两两交换链表中的节点题目链接leetcode 24.两两交换链表中的节点题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]解析递归 / 迭代先说说递归1.递归三要素:(1)终止条件:当只有一个节点或者没有节点的时候就可以停止了;(2)返回值

2020-12-12 17:20:50 76

原创 [链表]面试题 0201-移除重复节点

[链表]–移除重复节点题目链接面试题 0201.移除重复节点题目编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。示例 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] 输入:[1, 1, 1, 1, 2] 输出:[1, 2]解析首先看到就会想到 Set 集合去重,这个就啪的一下很快啊,一下子就出来了,就是时间复杂度感觉有点高哈,所以试试另一种:既然链表长度和元素都

2020-12-12 16:33:26 167

原创 [链表]leetcode147-对链表进行插入排序和leetcode148-链表排序

[链表]–对链表进行插入排序和链表排序题目链接leetcode 147.对链表进行插入排序题目对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例输入: 4->2->1->3输出: 1->2->3->4输入: -1->5->3->4-&

2020-12-12 16:04:36 79

原创 java.sql.Date和java.util.Date的区别转换以及Date序列化

Date 转换以及 Date 序列化前言一、相关点1. 毫秒值2. 日期时间模式3. 日期时间模式示例二、Date1. java.sql.Date2. java.sql.Time3. java.sql.Timestamp4. java.util.Date三、转换1. java.util.Date 转换为 java.sql.Date2. java.sql.Date 转换为 java.util.Date3. 数据库中获取 Date 以及转换四、序列化日期总结前言日期类开始计算的时间是1970年1月1日(.

2020-12-12 13:34:24 575

原创 Web知识整理

Web学习——相关知识点前言一、前端“三剑客”1. HTML1.1 HTML概述1.2 常见标签2. CSS3. JavaScript二、HTTP协议1. HTTP请求与响应2. 静态资源 VS 动态资源三、Servlet前言Web一、前端“三剑客”1. HTML1.1 HTML概述HTML是构成网页的主要语言,但是它不是一门编程语言。从它的全称超文本标记语言( HyperText Markup Language)可以看出它是标记语言,用于定义内容结构。HTML是由一系列的元素(Ele..

2020-12-08 08:22:34 92

原创 [链表]leetcode203-移除链表元素

[链表]–移除链表元素题目链接leetcode 203.移除链表元素题目删除链表中等于给定值 val 的所有节点。示例输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解析双指针遍历链表,就值相等就删除!OK 了?没错!还有个特殊情况:万一删除的是 head,需要遍历完以后判断一下,需要的话就删除,然后 head = head.next。代码实现public class

2020-12-06 19:14:15 150

原创 [链表]leetcode2-两数相加和leetcode-445两数相加Ⅱ

[链表]–两数相加和两数相加Ⅱ题目链接leetcode 2.两数相加题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 =

2020-12-06 18:57:52 97

原创 [链表]leetcode109-有序链表转二叉搜索树

[链表]–有序链表转二叉搜索树题目链接leetcode 109.有序链表转二叉搜索树题目给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9

2020-12-06 18:15:45 86

原创 [链表]leetcode83-删除排序链表中的重复元素和leetcode82-进阶

[链表]–删除排序链表中的重复元素及进阶题目链接leetcode 83.删除排序链表中的重复元素题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例输入: 1->1->2输出: 1->2输入: 1->1->2->3->3输出: 1->2->3解析比较简单的类型了。遍历链表进行比较,如果重复(当前节点值等于下一节点值)就删除下一个节点;如果补充都就继续遍历。代码实现public class Soluti

2020-12-06 17:50:38 123

原创 [链表]leetcode1669-合并两个链表

[链表]–合并两个链表题目链接leetcode 1669.合并两个链表题目给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。示例输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]输出:[0,1,2,1000000,1000001,1000002,5]解释:我们删除

2020-12-06 16:36:14 185

原创 [链表]leetcode21-合并两个有序链表

[链表]–合并两个有序链表题目链接leetcode 21.合并两个有序链表题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解析首先这个题肯定是有多种解法的。比如第一种的迭代:定义一个傀儡头节点 dummyHead 存放新链表以及一个指针用于遍历新链表连接节点;由于两个旧链表后面完全没用了,可以用头

2020-12-06 15:57:21 112

原创 [链表]leetcode141-环形链表和leetcode142-环形链表Ⅱ

[链表]–环形链表题目链接leetcode 141.环形链表题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例输入:head = [3,2,0,

2020-12-06 14:35:48 62

原创 [链表]leetcode143-重排链表

[链表]–重排链表题目链接leetcode 143.重排链表题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例给定链表 1->2->3->4, 重新排列为 1->4->2->3.给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.解

2020-12-06 14:08:28 109

原创 [链表]leetcode876-链表的中间节点

[链表]–链表的中间节点题目链接leetcode 876.链表的中间节点题目给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.

2020-12-06 14:06:10 111

原创 [链表]leetcode725-似曾相识-分隔链表

题目链接leetcode 725.分隔链表题目给定一个头结点为 root 的链表, 编写一个函数将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 结果 [ [1], [2], [3], [4], null ]示例输

2020-12-05 07:49:10 201

原创 [链表]leetcode86-分割链表?分隔链表?

[链表]–分割链表?分隔链表?题目链接leetcode 86.分隔链表类似题型 相同题型面试题 02.04.分割链表题目给定一个链表和一个特定值 x,对链表分隔,使所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解析双指针!首先当然是链表判空,空链表一点也不

2020-12-05 00:02:44 114

原创 [链表]leetcode234-回文链表

[链表]–回文链表题目链接leetcode 234.回文链表类似题型 相同题型面试题 0206.回文链表题目请判断一个链表是否为回文链表。示例输入: 1->2->2->1输出: true输入: 1->2输出: false解析代码实现-----------------------------------------------------------------------------有始有终分割线------------------------

2020-12-03 19:57:06 97

原创 [链表]leetcode206-反转链表和leetcode92-反转链表Ⅱ

[链表]–反转链表及进阶题目链接leetcode 206.反转链表类似题型剑指 Offer 24.反转链表题目反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解析基础反转的还是比较简单的。直接双指针,一个遍历反转节点。一个是该节点的前驱节点,把该节点的指针域 next 指向前驱节点j就 Okay 了,需要注意的只有一点,每次反转之后这个节点的 next 都

2020-12-03 14:05:09 151

原创 [链表]leetcode160-Romantic相交链表

[链表]–相交链表题目链接leetcode 160.相交链表类似题型剑指Offer 52.两个链表的第一个公共节点面试题 02.07.链表相交题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例输入: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 =

2020-12-03 13:00:43 64

原创 [链表]leetcode19-删除链表的倒数第k个节点

[链表]–删除链表的倒数第 k 个节点题目链接leetcode19.删除链表的倒数第k个节点类似题型剑指Offer22.链表中倒数第k个节点面试题 02.02.返回倒数第k个节点题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。给定的 n 保证是有效的。示例给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解析要删除倒数第 k 个节点,就需要连

2020-12-03 12:24:44 349

原创 集合之List

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档List1. List1.1 List 的常用方法1.2 List的使用2. ArrayList(顺序表)2.1 ArrayList的实现2.2 ArrayList的使用3. LinkedList(链表)3.1 单链表的实现3.2 单链表的使用3.3 双链表的实现3.4 双链表的使用4.ArrayList和LinkedList 的区别List接口实现了Collection接口,结合之前的图来说。实现 List 的有多种方式,比较常用的

2020-12-02 08:39:57 178

原创 泛型和包装类

泛型和包装类一、泛型1. 泛型介绍1.1 设计原则1.2 泛型分类1.3 泛型的使用2. 泛型重点二、包装类1. 基本数据类型的包装类2. 包装类的使用2.1 装箱(装包)- boxing2.1 拆箱(拆包)- unboxing一、泛型早期 Java 是使用 Object 来代替任意类型的。这是因为基类的引用可以指向子类的对象。而 Object 是所有类型的祖先类,所以可以定义元素是 Object 类型,然后使用 Object 类型的引用指向任意类型的对象。但是这样是存在问题的:就像示例所示,在.

2020-11-25 23:16:03 230

原创 Java集合框架

Java集合框架一、介绍二、接口(Interfaces)1 Collection1.1 Collection常用方法1.1 Collection使用示例2. Map2.1 Map常用方法2.2 Map使用示例3. 接口以及实现类3.1 List(1)ArrayList(2)LinkedList3.2 Set(1)HashSet(2)TreeSet3.2 Map(1)HashMap(2)TreeMap总结一、介绍Java集合框架(Java Collection Framework)可以看作是一种容器(

2020-11-23 12:47:43 140 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除