数据结构有几类:线性结构、链表、Hash散列 1.线性结构:在内存中存放的顺序是连续的可以节约空间,可以通过索引查找,优点:查询数据很快、缺点:每次修改删除都有内存的移动会慢。 2.链表:链表结构在内存中是不连续的,不可以通过索引查找,他在每块内存中除了存放值还存放了下块内存的索引,优点:增删快,缺 ...
分类:
Web程序 时间:
2020-07-28 00:24:34
阅读次数:
87
思路: 中序:左->根->右 1.需要一个建立一个栈,首先将左子树放入栈中 2.获取栈顶元素并进行节点判断是否有右子树 3. 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
分类:
其他好文 时间:
2020-07-27 23:50:51
阅读次数:
62
#1 栈 ##1.1 栈的基本概念 栈(stack)又名堆栈,它是一种 运算受限的线性表。限定 仅在表尾进行插入和删除操作 的线性表。表尾被称为栈顶,相对地,把另一端称为栈底。 ###1.1.1 特点 它的特殊之处在于限制了这个线性表的插入和删除的位置,它始终只在栈顶进行。这也就使得:栈底是固定的, ...
分类:
编程语言 时间:
2020-07-27 23:47:07
阅读次数:
64
题目链接 https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题解 递归解法 路径:一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 这道题和LeetCode687最长同值路径和Leet ...
分类:
其他好文 时间:
2020-07-27 23:35:37
阅读次数:
74
大顶堆和小顶堆 相关介绍可参看:北京大学空地学院数据结构与算法 第六章 6.8.2.2 小节 代码实现如下 class Heap: """二叉堆的实现 小顶堆""" def __init__(self): self.heapList = [0] # 默认一个 0 做占位,使得根节点的索引在 1 上 ...
分类:
编程语言 时间:
2020-07-27 23:32:44
阅读次数:
75
布隆过滤器(BloomFilter)原理 实现和性能测试 布隆过滤器(BloomFilter)是一种大家在学校没怎么学过,但在计算机很多领域非常常用的数据结构,它可以用来高效判断某个key是否属于一个集合,有极高的插入和查询效率(O(1)),也非常省存储空间。当然它也不是完美无缺,它也有自己的缺点, ...
分类:
其他好文 时间:
2020-07-27 16:06:12
阅读次数:
77
1. Redis Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bi ...
分类:
系统相关 时间:
2020-07-27 15:55:04
阅读次数:
89
解答:本题主要采用递归的方式来构造二叉树 解答思路: 1、前序遍历的第一个节点必然等于后序遍历的最后一个节点,这个节点为根节点,然后再找一把刀,把中间的砍成左子树和右子树 2、前序的第二个节点,就是左子树的根节点,同时要找到这个节点在后序中的位置,那么从后序开头到这个位置之间,就是左子树了,这个位置 ...
分类:
其他好文 时间:
2020-07-27 15:44:35
阅读次数:
74
前言 上一节通过两个经理案例初步认识动态规划,今天这一节主要讲动态规划的理论知识。 “一个模型三个特征”理论讲解 实际上,动态规划作为一个非常成熟的算法思想,这部分理论总结为“一个模型三个特征”。 一个模型 一个模型指动态规划适合解决的问题模型。这个模型定义为“多阶段决策最优解模型”。 一般是用动态 ...
分类:
编程语言 时间:
2020-07-27 15:39:05
阅读次数:
71
思路: 1.使用DFS遍历整颗树 2.二叉树的根节点的范围为INT_MIN,INT_MAX. 3.对于当前节点判断是否合法,合法条件:先遍历左子树的最大值是否小于当前节点的值,在遍历右子树,右子树的最小值是否大于当前节点的值 注意: 根节点的边界为 INT_MIN,INT_MAX 左子树的范围:lo ...
分类:
其他好文 时间:
2020-07-27 13:53:58
阅读次数:
61