-
算法:买卖股票的最佳时机
题目 给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。 你只能选择某一买入这只股票,并选择在未来的某一个不同的日子卖出该
2021-02-25, Views: 2731 , Topics: 算法
-
算法:无重复字符的最长子串
题目 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例一 输入: s = "abcabcbb" 输出: 3 解释: 因为
2021-02-24, Views: 2120 , Topics: 算法
-
算法:数组中的第 K 个最大元素
题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 可以假设k总是有效的,且1
2021-02-23, Views: 2181 , Topics: 算法
-
数据结构:2-3树、B树、B+树、B*树
多路查找树 muitl-way search tree 在二叉树中,每个节点最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多路查找树,
-
算法:二叉树的层序遍历
要求 例如:以下二叉树按4 2 7 1 3 6 9顺序输出,一层一层输出。 4 / \ 2 7 / \ / \ 1 3
2021-02-21, Views: 2470 , Topics: 算法
-
数据结构:简化平衡二叉树旋转时节点交换的操作
说明 之前文章二叉树左旋、右旋、双旋时替换是new一个临时节点,使用根节点指向不变替换值的方式完成。可参见:https://www.zhangbj.com/p/
2021-02-20, Views: 2685 , Topics: 数据结构
-
数据结构:平衡二叉树的左旋、右旋和双旋
左旋 步骤 以当前节点的值,创建新的节点。 把新的节点的左子节点设置为当前节点的左子节点。 把新的节点的右子节点设置为当前节点的右子节点的左子节点。 把当前节
2021-02-19, Views: 3881 , Topics: 数据结构
-
算法:计算二叉树的高度
Java 实现 public class TreeHeight { public static void main(String[] args) {
2021-02-17, Views: 3088 , Topics: 算法
-
数据结构:平衡二叉树
别称 平衡二叉搜索树:Self-balancing binary search tree。 AVL树:得名于它的发明者G. M. Adelson-Velsky和
2021-02-16, Views: 2578 , Topics: 数据结构
-
算法:二叉排序树的添加、查找和删除
定义节点和二叉排序树 type BinarySortTree struct { root *Node } type Node struct {
2021-02-15, Views: 2420 , Topics: 算法
-
算法:使用深度优先搜索对二叉树遍历、查找和删除
说明 深度优先搜索使用递归实现二叉树的前序,中序和后序遍历、查找和删除。 前序遍历 先输出父节点,再遍历左子树和右子树。 中序遍历 先遍历左子树,再输出父节点,
2021-02-14, Views: 2756 , Topics: 算法
-
数据结构:满二叉树和完全二叉树
满二叉树 如图:所有叶子节点都在最后一层,并且节点总数为2^n-1。n为层数。 完全二叉树 如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一
2021-02-13, Views: 4247 , Topics: 数据结构
-
数据结构:树的常用术语
示意图 常用语 节点/节点对象(一个个小圆圈) 根节点/root节点 父节点 子节点 叶子节点 节点的权(节点的值) 路径:从ro
2021-02-11, Views: 3666 , Topics: 数据结构
-
数据结构:哈希表
定义 数组+链表:数组中的每个元素对应一个链表,加入元素时根据hash算法获得对应的数组索引,再插入到该索引对应的元素,即链表的末尾。 代码 func main
2021-02-11, Views: 2907 , Topics: 数据结构
-
算法:二分查找
循环法 func main() { arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9} fmt.
2021-02-10, Views: 2634 , Topics: 算法
-
算法:快速排序
算法演进 以数组中间索引的元素为中轴值,分组左右两边两个数组。 左边数组遍历找到一个大于中轴值的数,右边数组遍历找到一个小于中轴值的数,进行交换,遍历完成,左边
2021-02-09, Views: 2577 , Topics: 算法
-
算法:希尔排序
算法演进 首次按数组的长度除以2为分组步长,若步长大于1,则再次分组,以首次得到的步长再除以2为步长,以此类推分组,直至步长为1。 以[8, 9, 1, 7,
2021-02-08, Views: 2174 , Topics: 算法
-
算法:插入排序
算法:插入排序 算法演进 将数组看作两个数组,前一部分为有序数组(已排好序),后一部分为无序数组(待排序)。 以[10, 20, 5, 0]数组为例。 [10
2021-02-07, Views: 2043 , Topics: 算法