数据结构和算法总结
shichap
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多叉查找树和红黑树
多叉查找树和红黑树上图是一个二叉查找树二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度.解决的方法可以使用多叉树2-3树,2-3-4树就是多叉树,多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化。二叉树和B树如图B树通过重新组织节点, 降低了原创 2020-10-09 10:13:34 · 321 阅读 · 0 评论 -
堆和优先队列
优先队列1.1优先队列的底层实现根据优先队列的特点 可以使用二叉堆作为优先队列的底层实现接下来主要回顾对的特点堆2.1 堆的分类堆的一个重要的性质就是 任意节点的值总是>=子节点的值或<=子节点的值2.2 堆的接口设计2.4 二叉堆二叉堆元素的添加和删除向堆中添加元素siftup向堆中删除元素siftdownpublic class MaxHeap<E extends Comparable<E>> { private A原创 2020-10-09 09:29:03 · 200 阅读 · 0 评论 -
队列的实现
队列1.1队列的接口设计1.2队列的底层实现动态数组链表优先使用双向链表1.3 双端队列1.4 循环队列循环队列的实现public class LoopQueue<E> implements Queue<E> { private E[] data; private int front, tail; private int size; public LoopQueue(int capacity){原创 2020-10-09 08:56:26 · 138 阅读 · 0 评论 -
贪心算法总结
[55. 跳跃游戏]给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。原创 2020-10-09 08:43:47 · 403 阅读 · 0 评论 -
动态规划 算法总结
[122. 买卖股票的最佳时机 II]给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股原创 2020-10-09 08:43:20 · 251 阅读 · 1 评论 -
深度优先 算法总结
文章目录[98. 验证二叉搜索树]解题思路 dfs[98. 验证二叉搜索树]给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但原创 2020-10-05 17:20:11 · 1292 阅读 · 0 评论 -
二叉树 专题
94 二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题方法迭代class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<>();原创 2020-10-05 06:37:49 · 319 阅读 · 0 评论
分享