自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

转载 【链表】707. 设计链表

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

2021-01-30 17:31:44 171

转载 【链表】2.两数相加 & 445. 两数相加 II

题目2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],

2021-01-29 16:25:35 101

转载 【链表】24.两两交换链表中的节点 & 25. K 个一组翻转链表

fff

2021-01-29 11:44:32 141

原创 【链表】143. 重排链表

题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.解法寻找链表中点 + 链表逆序 + 合并链表根据题意

2021-01-27 00:59:13 249

原创 【链表】1721. 交换链表中的节点

题目1721. 交换链表中的节点解法 public ListNode swapNodes(ListNode head, int k) { ListNode fast = head; ListNode slow = head; for (int i = 0; i < k - 1; i++) { fast = fast.next; } ListNode first = fast; while

2021-01-26 20:22:30 191

转载 【链表】328. 奇偶链表 & 61.旋转链表 & 86. 分隔链表 & 725 分隔链表

题目奇偶链表解法public ListNode oddEvenList(ListNode head) { if (head == null) { return head; } ListNode evenHead = head.next; ListNode odd = head; ListNode even = head.next; while (even != null &amp

2021-01-26 20:03:00 170

原创 【链表】1290. 二进制链表转整数

题目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]输出:1

2021-01-25 15:18:01 99

转载 【链表】21. 合并两个有序链表 & 147. 对链表进行插入排序 & 148. 排序链表

题目21. 合并两个有序链表剑指 Offer 25. 合并两个排序的链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]解法迭代我们可以用迭代的方法来实现上述算法。当 l1 和 l2 都不是空链表时,判断 l1

2021-01-25 14:42:53 236

原创 【链表】相交链表

题目面试题 02.07. 链表相交160. 相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。题解一图胜千言,看图你就明白了空间复杂度 O(1) 时间复杂度为 O(n)这里使用图解的方式,解释比较巧妙的一种实现。根据题目意思如果两个链表相交,那么相交点之后的长度是相同的我们需要做的事情是,让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短链表的头结点位置。为此,我们必须消除两个链表的长度差指针 pA 指向 A 链表,指

2021-01-23 14:52:48 92

原创 【链表】141. 环形链表 & 面试题 02.08. 环路检测

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

2021-01-23 14:22:44 107

原创 【链表】回文链表

题目在leetcode上有两个题234. 回文链表面试题 02.06. 回文链表

2021-01-21 17:00:55 151

原创 【链表】83. 删除排序链表中的重复元素 & 82. 删除排序链表中的重复元素 II

2021-01-21 15:51:43 80

原创 【链表】876. 链表的中间结点

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

2021-01-21 15:45:34 83

原创 【链表】面试题 02.01. 移除重复节点

题目面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?解法使用辅助set法建立一个辅助的数据结构,用来保存节点值搞一个虚拟头节点来遍历所有的节点class Solution

2021-01-21 14:59:38 97 2

原创 【链表】删除链表中的节点 & 删除链表的倒数第 N 个结点

题目本题在leetcode上有两个题剑指 Offer 18. 删除链表的节点237. 删除链表中的节点第一个题的描述如下给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,

2021-01-21 01:19:27 404

转载 【链表】剑指 Offer 22. 链表中倒数第k个节点

题目描述链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解题思路两趟扫描分两趟扫描链表第一趟用于获取链表长度size,然后算出第二趟应该扫描的节点个数size-k。第

2021-01-19 11:01:26 72

原创 【链表】剑指 Offer 06. 从尾到头打印链表 & 206. 反转链表 & 92. 反转链表 II

写在前面继续开始刷题了,加油哦~剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。解题方法顺序访问+反转递归遍历链表,把结果放在list里,然后反转该链表class Solution { public int[] reversePrint(ListNode head) { ArrayList<Integer> list = new ArrayList<>(); ListNode cu

2021-01-19 01:28:38 168

原创 《Java核心技术》第14章 并发

第14章 并发一个程序同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(multithreaded)。那么,多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容易。此外,在有些操作系统中,与进程相比较,线程更“轻量级”,创建、撤销一个线程比启动新进程的开销要小得多。14.1 什么是线程调用Thread.sleep不会创建一个新线程

2021-01-11 20:32:51 67

原创 《Java核心技术》第九章 集合 学习笔记

第九章 集合9.1 Java集合框架9.1.1 将集合的接口与实现分离与现代的数据结构类库的常见情况一样,Java集合类库也将接口(interface)与实现(implementation)分离。首先,看一下人们熟悉的数据结构——队列(queue)是如何分离的。队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数。当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列。队列接口的最简形式可能类似下面这样:public interface Queue

2021-01-11 20:26:11 216

原创 《Java核心技术》第八章 泛型程序设计 学习笔记

第八章 泛型程序设计从Java程序设计语言1.0版发布以来,变化最大的部分就是泛型。泛型正是我们需要的程序设计手段。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用。8.1 为什么要使用泛型程序设计泛型程序设计(Generic programming)意味着编写的代码可以被很多不同类型的对象所重用。8.1.1 类型参数的好处泛型提供了一个更好的解决方案:类型参数(typeparameters)。ArrayL

2021-01-11 15:33:57 129

原创 《Java核心技术》第七章 异常、断言和日志 学习笔记

第7章 异常、断言和日志对于异常情况,例如,可能造成程序崩溃的错误输入,Java使用一种称为异常处理(exception handing)的错误捕获机制处理。在测试期间,需要进行大量的检测以验证程序操作的正确性。然而,这些检测可能非常耗时,在测试完成后也不必保留它们,因此,可以将这些检测删掉,并在其他测试需要时将它们粘贴回来,这是一件很乏味的事情。当程序出现错误时,并不总是能够与用户或终端进行沟通。此时,可能希望记录下出现的问题,以备日后进行分析。7.1 处理错误如果由于出现错误而使得某些操作没有

2021-01-11 10:07:04 150 1

原创 《Java核心技术》第六章 接口、lambda表达式与内部类 学习笔记

第6章 接口、lambda表达式与内部类接口(interface)技术,这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现(implement)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。了解接口以后,再继续介绍lambda表达式,这是一种表示可以在将来某个时间点执行的代码块的简洁方法。使用lambda表达式,可以用一种精巧而简洁的方式表示使用回调或变量行为的代码。接下来,讨论内部类(inner class)机制。理论上讲,内部类有些复杂,内部类定义

2021-01-08 19:39:26 281

原创 《Java核心技术》第五章 继承 学习笔记

第5章 继承本章将学习面向对象程序设计的另外一个基本概念:继承(inheritance)。利用继承,人们可以基于已存在的类构造一个新类。继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。这是Java程序设计中的一项核心技术。另外,本章还阐述了反射(reflection)的概念。反射是指在程序运行期间发现更多的类及其属性的能力。这是一个功能强大的特性,使用起来也比较复杂。5.1 类、超类和子类5.1.1 定义子类下面是由继承Employee类来

2021-01-05 14:52:40 198

原创 《Java核心技术》第四章 对象与类 学习笔记

第四章 对象4.1 面向对象程序设计概述

2021-01-04 15:13:31 144

UML复习PPT

本PPT是UML的复习资料,有各种图的例题,有助于UML的复习

2015-07-11

空空如也

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

TA关注的人

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