06 2021 档案

摘要:插入排序: 思路: 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。 时间复杂度: 最好 O(N) 当数组正序 最坏 O(N ^ 2) 当数组倒叙 (一)代码 public class I 阅读全文
posted @ 2021-06-30 16:01 朝才 阅读(24) 评论(0) 推荐(0)
摘要:选择排序算法: 思想: 每次在未排序得数组中找到最小的放到排序数组末尾 时间复杂度: O(n²) (一) 代码 public class SelectionSort { public static void main(String[] args) { int arr[] = new int[]{3, 阅读全文
posted @ 2021-06-30 15:29 朝才 阅读(43) 评论(0) 推荐(0)
摘要:思想: 先拆分,再合并 核心:归并 时间复杂度: 始终都是 O(nlogn) 。代价是需要额外的内存空间 (一) 代码 public class MergeSort { public static void main(String[] args) { int []arr = {9,8,7,6,5,4 阅读全文
posted @ 2021-06-30 15:02 朝才 阅读(49) 评论(0) 推荐(0)
摘要:题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大 (一个节点也可以是它自己的祖先) 思路: 递归出口 p == root || q == root || root 阅读全文
posted @ 2021-06-30 11:04 朝才 阅读(117) 评论(0) 推荐(0)
摘要:题目: 思路: 1 运用 LinkedHashMap 已经实现好的LRU 继承 LinkedHashMap 重写 removeEldestEntry 方法 当size() > capatity 返回true 2 使用HashMap 和 双向链表 读缓存时从HashMap 中查找key,更新缓存时同时 阅读全文
posted @ 2021-06-29 17:53 朝才 阅读(80) 评论(0) 推荐(0)
摘要:题目: 思路: 根据前序遍历的第一个数我们可以知道 根节点 根据 根节点 去中序遍历中可以分出左树 与 右树 运用极限逼近的思想,假设只有三个数据 前序【3,9,20】 中序【9,3,20】 去设计算法: 我们将中序中的数据存入map 中 value 存值得下标,根据蓝色字的思想,递归去构建树 (一 阅读全文
posted @ 2021-06-28 12:37 朝才 阅读(78) 评论(0) 推荐(0)
摘要:题目: 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 思路: 动态规划 1 先对数组排序 2 记录连续递增的结果, 如有不递增的情况,更新结果最大值,重置递增值为1 (一) 代码 年岁 阅读全文
posted @ 2021-06-27 19:21 朝才 阅读(45) 评论(0) 推荐(0)
摘要:题目: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 思路: 动态规划: 新建 nums.length 长度的数组 两次 阅读全文
posted @ 2021-06-27 18:39 朝才 阅读(63) 评论(0) 推荐(0)
摘要:题目: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路: 第 k 个最大的元素 : 就是排序后倒数第几个,我们用数组长度 - k 得出 正数第几个 运用优先队列,入队排序 再出队 (数组长度 - k) 次 返回 下一 阅读全文
posted @ 2021-06-25 15:53 朝才 阅读(188) 评论(0) 推荐(0)
摘要:题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 思路: (一)分四种情况,效率较低 用数组 将数据放入List 集合 进行判断 1 list 只有一条数据,直接让头指针指向空 2 删除数据为 倒数第一个 , 就让倒数第一个node 的 前一个 node.next = nu 阅读全文
posted @ 2021-06-24 17:05 朝才 阅读(130) 评论(0) 推荐(0)
摘要:题目: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 思路: dfs + 回溯 + 剪枝 (一)代码 class Solution { pu 阅读全文
posted @ 2021-06-23 15:57 朝才 阅读(47) 评论(1) 推荐(0)
摘要:题目: 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 思路: 遍历数组时,不断更新最大值 当出现负数时,最大值会变为最小值,需要维护一个最小值 动态规划:能够保存已解决的子问题的答案,而在需要时再找出已求得的答案, 这样 阅读全文
posted @ 2021-06-23 13:56 朝才 阅读(51) 评论(1) 推荐(0)
摘要:题目: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 思路: 1 快慢指针找到相遇点。 2 一个从相遇点单步走,一个从头指针单步走,再次相遇的地方就是入环的第一个node (一) 代码 今天的午饭真难吃 新能源和科技又大涨了 阅读全文
posted @ 2021-06-23 12:11 朝才 阅读(79) 评论(0) 推荐(0)
摘要:题目: 思路: 复制一个数组 进行排序 将排序后的数组与原数组从两边同时比较 减去两边部分有序的,就是剩下需要排序的 (一)代码 浑浑噩噩的每一天 阅读全文
posted @ 2021-06-22 17:13 朝才 阅读(43) 评论(0) 推荐(0)
摘要:题目: 思路: 1 暴力解决 2 前缀和 + hash表 (一)代码 暴力 (二)代码 前缀和 前缀和 s[i] = s[i-1] + nums[i] 阅读全文
posted @ 2021-06-21 19:18 朝才 阅读(35) 评论(0) 推荐(0)
摘要:题目: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 思路: 1 暴力遍历 从前往后 第一个 从后往前第一个 2 二分法 + 递归 (一) 代码 二分法+递归 cla 阅读全文
posted @ 2021-06-20 20:29 朝才 阅读(137) 评论(0) 推荐(0)
摘要:题目: 思路: 1 深度优先遍历 回溯算法 剪枝 递归 回溯思想:回溯在迷宫搜索中使用很常见,就是这条路走不通,然后返回前一个路口,继续下一条路 (一)代码 工体爱情故事 阅读全文
posted @ 2021-06-19 23:12 朝才 阅读(73) 评论(0) 推荐(0)
摘要:题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 思路: 1 运用hash表 key 存元素 value 存次数 2 将无重复的元素存入list 3 运用Collections.sort 根据value的大小进行排序 (一) 阅读全文
posted @ 2021-06-19 16:13 朝才 阅读(45) 评论(0) 推荐(0)
摘要:题目: 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1和 n),可知至少存在一个重复的整数。 思路: 1 将数字放入hash的key中,看map是否包含key。 2 将值作为下标,给对应位置的值加num长度,大于2*num ,就找到了。 (一)代码 (二) 阅读全文
posted @ 2021-06-19 14:54 朝才 阅读(99) 评论(0) 推荐(0)
摘要:题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 思路: 思1 :优先队列将链表数据入队,新建一个ListNode 将数据连接起来,注意保存头指针进行返回 思2 :归并排序 (递归拆分,将拆分后的归并起来 666) (注意掌握) (一)代码 优先队列 时间复杂度:O 阅读全文
posted @ 2021-06-18 14:42 朝才 阅读(225) 评论(0) 推荐(0)
摘要:MVCC实现原理 1 隐式字段 DB_ROW_ID : 隐式主键 6 byte DB_TAX_ID : 事务ID 6 byte DB_ROLL_PTR : 回滚指针 7 byte 2 undo日志 insert undo log: 代表事务在insert新记录时产生的undo log, 只在事务回滚 阅读全文
posted @ 2021-06-17 14:42 朝才 阅读(84) 评论(0) 推荐(0)
摘要:(一)长度是否可变 char : 长度不可变 类型char(10), 值为:abc,存储为:abc (abc+7个空格) varchar: 长度可变 类型varchar(10) 值为:abc,存储为:abc (自动变为3个的长度) (二)最多可存放字符数 char : 255个字符 varchar 阅读全文
posted @ 2021-06-16 15:05 朝才 阅读(344) 评论(0) 推荐(0)
摘要:题目: 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 思路: 计算在这个范围内的做标记,在循环找数组找出消失的数字 (一)代码 无尽的黑暗,压得我喘不过气 阅读全文
posted @ 2021-06-14 23:16 朝才 阅读(58) 评论(0) 推荐(0)
摘要:题目: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 思路: 递归遍历 三种情况 1 roo1 为空 阅读全文
posted @ 2021-06-14 13:33 朝才 阅读(60) 评论(0) 推荐(0)
摘要:题目: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 思路: 终止条件与返回值: 当两棵树的当前节点都为 null 时返回 true 当其中一个为 null 另一个不为 null 时返回 false 当 阅读全文
posted @ 2021-06-13 16:28 朝才 阅读(48) 评论(0) 推荐(0)
摘要:题目: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 思路: 每一层记录到一个队列中 循环队列,获取当前层node 得 value (一)代码 究竟怎样才算成功 或许是。。。。。 阅读全文
posted @ 2021-06-13 14:19 朝才 阅读(48) 评论(0) 推荐(0)
摘要:题目: 给你一个字符串 s,找到 s 中最长的回文子串。 思路: 中心扩散法, 涉及回文子串的 暂时都用这个,只会这个 (一) 代码 天气炎热 唯有西瓜伴我 阅读全文
posted @ 2021-06-13 12:21 朝才 阅读(58) 评论(0) 推荐(0)
摘要:题目: 思路: 中心扩展法 将串转为字符数组, 数组的第一位作为一个回文串 (一) 代码 算法算法 阅读全文
posted @ 2021-06-01 16:15 朝才 阅读(58) 评论(0) 推荐(0)
摘要:题目: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 思路: 递归找出树的节点个数 涉及到树的遍历就是递归 节点个数-1 就是直径长度 (一)代码 递归 减减重 阅读全文
posted @ 2021-06-01 14:29 朝才 阅读(62) 评论(0) 推荐(0)