- 博客(5)
- 收藏
- 关注
原创 【无标题】
大脑中不应该压太多的栈,最多压两个栈,第一个是递归最底层的出口,第二个是中间的某一个递归状态。广度搜索我们需要保存每一个节点的入度数,所以可以用一个一维数组或者HashMap来保存。在进入之前要做的事情是判断这个节点有没有被访问过,如果被访问过了说明是环。深度搜索我们需要保存每一个节点的所有出度点,所以需要用一二维数组来保存。实现拓扑排序有两种方式,一种是深度搜索,一种是广度搜索。函数上面的1和下面的2分别代表递归时的什么含义?没错,数据结构是根据不同的算法需求来选取的。1代表的是递归时准备进入的状态。
2023-07-29 20:20:22 54
原创 双指针本质
基于交换的思想,我们可以把符合条件的元素放到数组前列,不需要的元素放到数组后列,通过slow隔开,就达到了删除的目的。fast的目的就是找到后面需要的元素,然后通过交换统一放到slow的位置,slow++,然后不断重复。数组操作中双指针的本质是可以对两个任意元素进行交换、更改从而不影响数组长度从而不影响遍历。当数组中两个指针 slow,fast 指向了不同的元素是,我们可以干什么。基于上述操作,我们可以干什么。1.交换连个元素的位置。1.删除 -> 消重。
2023-06-21 11:17:17 65
原创 满二叉树的数组表示
2^D - 1. D 的意思是二叉树的高度, 比如当 D = 1 时, 二叉树只有一个节点, 当 D = 2 时, 二叉树有两层, 节点为1, 2, 3, 当 D = 3 时, 节点为 1, 2, 3, 4, 5, 6, 7. 以此类推. 在节点 1 处放一个小球, 它会往下落. 每个内节点上都有一个开关, 初始全部关闭, 当每次有小球落到一个开关上时, 它的状态都会改变. 当小球到达一个内节点时, 如果该节点上的开关关闭, 则往左走, 否则往右走, 直到走到叶子节点.主要是理解二叉树的数组表示。
2023-06-14 11:20:22 359
原创 Huffman code algorithm
小明算数不太好,如果他计算a+b需要花费(a+b)的时间,现在有n个数字,让小明去求这个n个数字的和,求小明计算这n个数字所花费的最小的时间。
2023-06-13 20:27:34 97 1
原创 kotlin 实现安卓底部导航栏(点击变换图标和文字)+Fragment切换
布局逻辑布局代码.kt代码实现点击后图标和文字变换实现点击后Fragment切换效果图一、布局逻辑二、布局XML代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:t.
2021-02-24 20:16:46 1296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人