
数据结构与算法
Longtermevolution
人生不要太匆匆,不急,慢慢来吧
展开
-
数据结构和算法导航
1、排序2、搜索算法 - DFS(深度优先)3、搜索算法 - BFS(广度优先)原创 2020-04-09 11:49:03 · 208 阅读 · 0 评论 -
希尔排序-转发
https://zhuanlan.zhihu.com/p/73726253代码似乎有误,不做参考。原创 2021-04-19 15:49:41 · 145 阅读 · 0 评论 -
关于二叉树、平衡二叉树、红黑树
目录1、二叉树缺点2、平衡二叉树3、为什么有了平衡二叉树,还要红黑树?参考文章:记一次腾讯面试:有了二叉查找树、平衡树(AVL)为啥还需要红黑树?1、二叉树缺点二叉查找树,相信大家都接触过,二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图缺点:一般情况下,查找基于二分查找,查找的时间复杂度为O(logn); 当二叉树不够平衡,甚至退化成类似链表结构的时候,查找的时间复杂度为O(n)。耗时。2、平衡二叉树平衡二叉树就是为了解决原创 2020-10-05 18:04:02 · 1133 阅读 · 0 评论 -
0-1 背包问题 Java
https://blog.youkuaiyun.com/huyang0304/article/details/82286279/** * 0-1背包 * @param val 价值 * @param weight 重量 * @param W 背包容量 * @return 最优解 */ public static int knapsack(int[] val, int[] weight, int W) { int N = we.原创 2020-09-19 15:10:43 · 195 阅读 · 0 评论 -
关于JDK1.8 java HashMap的tableSizeFor的解析:一个数最近2的幂次数方法
https://zhuanlan.zhihu.com/p/134690309public static void main(String[] args) { hightwo(0); hightwo(7); hightwo(32);}private static void hightwo(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n .原创 2020-09-19 15:09:39 · 495 阅读 · 0 评论 -
java 判断一个数是不是2的整数次幂
https://www.cnblogs.com/blog567/p/12374662.html原创 2020-09-19 15:08:39 · 238 阅读 · 1 评论 -
堆排序
https://www.cnblogs.com/chengxiao/p/6129630.html原创 2020-09-18 11:43:02 · 132 阅读 · 0 评论 -
每日算法 - 长度最小的子数组
目录题目思路代码总结题目给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试O(n log n) 时间复杂度的解法。来源:力扣(LeetCode)链...原创 2020-06-28 14:14:59 · 183 阅读 · 0 评论 -
每日算法 - 设计循环队列(基础算法)
目录题目解题思路1、数组数组实现代码单链表代码(思路见链接)题目设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue原创 2020-06-19 16:15:38 · 1069 阅读 · 0 评论 -
每日算法 - 二叉树中序遍历(基础算法)
目录题目解题思路中序遍历代码递归(最基础)栈莫瑞斯总结完整测试代码题目给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣...原创 2020-06-19 10:29:43 · 441 阅读 · 0 评论 -
每日算法 - 二叉树前序遍历(基础算法)
目录题目解题思路代码迭代 + 栈递归实现前序遍历(最基础)莫里斯遍历(了解)总结完整测试代码及结果题目给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-pre...原创 2020-06-18 20:29:32 · 316 阅读 · 0 评论 -
java - 广度优先搜索 - 遍历树 - 持续更新
目录广度优先搜索算法(Breadth-First Search,BFS)1、递归实现BFS遍历树2、非递归实现BFS遍历树树的定义参见:https://blog.youkuaiyun.com/Longtermevolution/article/details/105395558广度优先搜索算法(Breadth-First Search,BFS)BFS是从根节点开始,沿着树的宽度遍历...原创 2020-04-09 11:40:46 · 301 阅读 · 1 评论 -
java实现-深度优先搜索
定义DFS的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底。DFS适合此类题目:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解。...原创 2020-04-09 11:35:16 · 5674 阅读 · 0 评论 -
排序算法汇总
目录初级排序选择排序快速排序归并排序优先队列手撕冒泡排序初级排序选择排序总体思想:遍历数组,当前数字和剩余数字逐个对比,选择剩余数字中最小的元素和当前数字交换位置。时间复杂度:o(n^2)空间复杂度:o(1)快速排序归并排序总体思想:归并排序算法完全遵循分治模式。直观上其操作如下:(1)分解:分解等排序的n个元素...原创 2020-03-25 17:13:33 · 219 阅读 · 1 评论