
初级算法
输入输出
__渡己
Eloim Essaim Eloim Essaim
展开
-
红黑树 删除节点 兄弟节点和父节点归并 的理解
删除最右侧节点后,为了满足定理五,应该将它的兄弟节点父节点归并。在这种情况下,如果还按照父节点是红色节点的情况处理。那就会少一层黑色节点,也就不满足定理五了,要将父节点向下归,然后将关注节点作为父节点,continue。定理五:任意节点到达可达叶子节点的所经过的黑色节点相同。原创 2022-12-01 21:46:05 · 269 阅读 · 1 评论 -
Java 三路快排
适用于数组中有重复元素。原创 2022-09-04 17:55:33 · 239 阅读 · 0 评论 -
Java背包
问题描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。原创 2022-08-20 19:59:38 · 418 阅读 · 0 评论 -
AVL 添加和删除 JAVA
任意节点的左右子树高度差小于等于1。原创 2022-08-19 12:43:05 · 301 阅读 · 0 评论 -
994. Rotting Oranges
和二叉树层级遍历几乎相同,注意一层的遍历时队列目前的元素个数。自己是用模拟法写的,其实和题解bfs差不多,下面几个优化点。原创 2022-08-12 13:47:50 · 187 阅读 · 0 评论 -
173. Binary Search Tree Iterator 水题
1原创 2022-08-11 15:53:49 · 82 阅读 · 0 评论 -
230. Kth Smallest Element in a BST 水题
、原创 2022-08-11 15:38:13 · 333 阅读 · 0 评论 -
带换行的层级遍历
利用队列先进先出的特性,每次输出一个节点后,它的子节点入队,也就是说,一个节点的。原创 2022-08-10 20:52:37 · 135 阅读 · 0 评论 -
[l108]有序数组转化平衡二叉树
选择中间的数,来确保平衡,这里给的有序数组,通过下标递归选择即可。原创 2022-08-10 20:10:58 · 179 阅读 · 0 评论 -
[t74] 矩阵二分水题
‘’‘’原创 2022-08-10 17:31:38 · 84 阅读 · 0 评论 -
[L437] 前缀和
参考 https://leetcode.cn/problems/path-sum-iii/solution/qian-zhui-he-di-gui-hui-su-by-shi-huo-de-xia-tian/前缀和:顾名思义,就是从根节点到此节点的和。原创 2022-08-06 19:38:06 · 112 阅读 · 0 评论 -
[L543]二叉树直径
代码】[L543]二叉树直径。原创 2022-08-06 15:38:06 · 195 阅读 · 0 评论 -
[L110] 剪枝
判定是不是平衡二叉树,只有有一个子树不是那么就可以判定这棵树不是平衡二叉树。也就是说,只要出现了false,就没必要再去检查其他子树。这是我的写法这是标准答案这两种唯一的区别就是出口,标准答案是提前返回了,而我写的是在处理完左右子树之后才返回,标准答案完成了剪枝。在上面这种情况下,标答可以剪去红色部分。另外信息时自底向上汇聚的,在返回的同时,将信息也返回了。而不是单独再去计算这个节点的深度,下面这个就是非自底向上。...原创 2022-08-06 15:09:12 · 201 阅读 · 0 评论 -
JAVA非递归遍历二叉树
0-0原创 2022-08-05 18:15:12 · 310 阅读 · 0 评论 -
[L621] 任务调度
=原创 2022-07-31 19:37:25 · 114 阅读 · 0 评论 -
Java 全排列
-=-原创 2022-07-31 15:49:41 · 402 阅读 · 0 评论 -
[L14] 最长公共前缀【暴力,排序,分治】
然后题解中看到一个很好的思路,通过对字符串进行排序,first和last一定前缀相差数最多,只要拿到这两个的公共前缀,就可以了。排序return是在s>e时,这样它能在上一层拿到s,e从而取到值,这个题是在分到只有一个元素时时返回这个值。单对这个题来说,最核心的就是拿到两个字符串的公共前缀,下面是方法。分治也是题解看到的,这个题分治不是最优解m*n。感觉一个题只有适用于结合律,它才可以归并。复杂度字符串平均长度m,数目n。第一个念头就是暴力m*n。...原创 2022-07-28 17:18:23 · 125 阅读 · 0 评论 -
[L202]快乐数 快慢指针方式
【】。原创 2022-07-27 18:51:36 · 134 阅读 · 0 评论 -
Java希尔排序
设置一个gap,每次取出下标为gap+k的元素进行排序【插排】(k=0,1,2…)gap每次排完所有的元素后递减(一般gap = len/2;gap=gap/2)插排的速度和逆序的个数有关,而每一次希尔排序处理都会减少逆序个数,但排序中不是一个个排序而是对所选的元素排序对于9,2,-1,0升序在处理9,-1交换时,正常的插排要对9,2,-1进行排序,共3次而希尔排序只需要对9,-1排序,共2次。insertPro 将原先的间隔为1变为gap,初始值i设置为start+gap(就是一个改进的插排)s原创 2022-07-10 11:19:11 · 153 阅读 · 0 评论 -
JAVA八皇后
在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。1.用斜率判断周围是否有棋子,因为斜线的斜率绝对值是1,所以很好判断。2.第一次写我几乎是手动回溯,没有利用好递归的性质,一直在思考这么把这次的结果传到下一个递归中,而很少思考如何用这次的递归去处理上一次的递归。这一点很难说。...原创 2022-07-03 16:31:41 · 87 阅读 · 0 评论 -
JAVA堆排序
组建大堆,然后0号元素和size号换位,每次操作size减一组建大堆: 本质上是父节点和子节点换位,直到满足大堆条件原创 2022-07-02 16:56:53 · 101 阅读 · 0 评论 -
Java快速排序
=原创 2022-07-01 16:59:37 · 126 阅读 · 0 评论 -
Java归并排序
gui原创 2022-07-01 16:37:54 · 106 阅读 · 0 评论 -
Java约瑟夫环(环链)
N个人围成一圈,从第M个开始报数,第K个将被杀掉。例如M=1,N=6,K=5 被杀掉的顺序是:546231使用循环单链表模拟,主要一个问题就是当k=1时找第一个节点的前一个节点,法一是找一个,另外就是一次寻找,我用的后面那种。...原创 2022-06-30 13:28:18 · 417 阅读 · 0 评论 -
Java合并两个单链表(破坏)
compareTo 封装的就是普通的> 、 <show 打印链表node 类似构造体递归和非递归思路差不多,从链接的角度考虑返回值和重复步骤,控制好出口。测试原创 2022-06-26 18:22:47 · 189 阅读 · 0 评论 -
java循环队列
2原创 2022-06-24 11:54:27 · 74 阅读 · 0 评论 -
Linkedlist的简单重写
linkedlist重写原创 2022-06-18 20:05:20 · 149 阅读 · 0 评论 -
读者写者问题
java原创 2022-06-16 11:00:56 · 123 阅读 · 0 评论 -
生产者与消费者
-原创 2022-06-14 17:06:47 · 83 阅读 · 0 评论 -
稀疏数组~
1原创 2022-06-13 16:49:57 · 73 阅读 · 0 评论