10 2020 档案
摘要:反射 获取反射的三种方式: Class.forName(全类名):将字节码文件加载进内存,返回Class对象,全类名要加上类的包名,例top.linzeliang.example.RelfectTest(多用于配置文件,将类名定义在配置文件中,先读取文件,获取文件名,然后加载类) 类名.class:
阅读全文
摘要:回溯算法就是将每一种可能遍历一遍,而且每一种结果都不相同 解决一个回溯问题,实际上就是解决一个决策树的遍历过程 我们需要思考三个问题: 路径:已经做出的选择,将来要存储到结果的路径 选择列表:当前可以做的选择 结束条件:就是遍历到达末尾时候的条件 解决回溯算法有一个框架: LinkedList<Li
阅读全文
摘要:题目 给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 = "horse", word2 = "ros" 输出:3 解释: hor
阅读全文
摘要:题目 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 思路1 可以利用首位指针,一个从前往后,一个从后往前,直到相遇,由于数组的访问速度快,于是先将链表转化为数组,再通过索引进行访问比较 要注意的是,如果用
阅读全文
摘要:Date Java中Date有两种,一种是java.util.Date另一种是java.sql.Date,sql这个Date是util的Date的子类,sql一般用在Dao持久层 我们讨论util下的Date 构造函数: 常用的有Date() 和 Date(long date) getTime():
阅读全文
摘要:题目 206. 反转链表 思路1 迭代方法,在遍历过程中一边遍历,一遍将next指针改变 我们需要一个pre指针记录上一个当前结点的上一个,方便修改 时间复杂度O(n),空间复杂度O(1) 代码实现 class Solution { public ListNode reverseList(ListN
阅读全文
摘要:题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 思路1 创建哑结点,比较好控制如果就一个元素的情况 获取总长度,总长度减去n就是我们链表整数的
阅读全文
摘要:题目 142. 环形链表 II 思路1(哈希表) 利用哈希表HashSet,保存访问过的路径,如果未访问过,就add添加且返回true,如果已存在再添加的话就会返回该结点,而且该结点就是他们重合的结点,否则返回null 代码 import java.util.HashSet; public clas
阅读全文
摘要:基数排序 基数排序就是先对最后一位进行分类排序,然后再对倒数第二位进行排序,然后倒数第三位,直到最后一位,每次对每一位进行排序时,都会不断变得有序 由于每位数大小位0-9,所以我们需要10个桶来排序 如何求个/十/百位上得数是多少呢?int radix = (int) (a[j] / Math.po
阅读全文
摘要:桶排序 桶排序就是将最大值和最小值之间的元素进行瓜分,设定某个桶的容量,然后再定义每个桶的跨度,然后根据元素的大小范围,将他们放入各自的桶中,再对每个桶进行排序,最后输出桶即排序完成 确定桶的跨度大小:int gap = (max - min) / array.length + 1; 就是范围除以个
阅读全文
摘要:计数排序 计数排序适用于最大值和最小值产别不大的数组,如果说最小为0,最大为1亿,那么就需要创建容量为1亿个元素的数组,时间复杂度就很高了 把数组元素作为临时数组的下标,统计每个下表出现的次数,最后再从索引为0开始依次顺序遍历该临时数组,次数为n就输出n次,就排序好了 为什么要max - min +
阅读全文
摘要:堆排序 堆分为大顶堆和小顶堆,大顶堆就是父节点的值大于子节点的值(小顶堆反之)。大顶堆是升序,小顶堆是降序。 堆排序就是先构建一个顶堆,然后将堆顶第一个元素与最后一个元素交换,此时最大元素就跑到末尾去了,然后再整理一下堆进行下一次交换,直到剩下一个元素堆排序就完成了 不稳定排序、空间复杂度是O(1)
阅读全文
摘要:希尔排序 希尔排序就是插入排序的升级版,普通的插入排序只是用于小规模数组或者比较有序的数组 希尔排序交换不相邻的元素以对数组的局部进行排序,根本思想还是插入排序 希尔排序是让间隔step的元素有序,刚开始是h = len / 2,然后 h = h / 2 / 2,一直这样缩小下去,直到为1,此时数组
阅读全文
摘要:归并排序的两种方法 递归(自顶向下) 将一个大的无序的数组分成两个,然后拿出其中一个再分为两个···一直这样下取,直到最后剩下一个,那么这只包含一个元素的数组就是有序的了,然后将两个这样的数组通过merge方法有序的合并,一级一级,直到最开始的两个合并了就排序完了 先实现一个merge用来将两个有序
阅读全文
摘要:第一种(左右指针法) 我们取中间值作为基准值,又两个索引分别从左端和右端向中间靠拢,比较大小,将小于基准值的归到左边,大于基准值的归到右边,这时l与r可能都指向基准值的位置,但是下一步两个索引自增,l大于r(但是要保证不超出边界即left与right),这是l作为右半部分的新的递归的left,rig
阅读全文
摘要:冒泡排序 时间复杂度O(n2)、空间复杂度O(1)、稳定、原地排序 冒泡排序就是比较与自己相邻的下一个数,如果下一个数比这个大,就交换,否则就进行下一个比较了,经过一轮,大的就会排到最后面去了,循环a.length - 1次即可,注意的是,每次比较只需要比较到倒数第二个,因为最后一个没有下一个与它进
阅读全文
摘要:题目 多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。 给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。 示例 1: 输入:head
阅读全文
摘要:题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 思路1 链表可以创建一个头结点来辅助解题,再创建一个指针指向头结点(该指针是把链表连起来用的),
阅读全文
摘要:题目 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。 示例: 输入:(7 -> 2
阅读全文
摘要:题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路1 循环实现,创建一个头结点,再创建一个排序指针指向头结点。指向较小的结点,再比较后两个结点的大小,把指
阅读全文
摘要:Servlet学习笔记(四) 一、会话技术Cookie、session 1. 什么是会话技术? 指用户打开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话,在一次会话中可以有多次请求,可以共享数据 会话跟踪技术有
阅读全文