![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
罗蜜斯丹
那些人好奇怪啊?怎么一直在盯着人家的简述?
展开
-
课程笔记
快速选择算法的 Partition 的实质:快速选择/快速排序中的 partition 是 可左可右 的partition,也就是说,对于nums[i] == pivot 时,这个数字既可以放在左边,也可以放在右边。为什么这样划分数组呢?原因是为了避免出现类似 [1,1,1,1,1,1] 的数组中的元素,全部被分到一边的情况。我们让 nums[i] == pivot 的情况既不属于左边也不属于右边,这样就能够让 partition 之后的结果稍微平衡一些。如果 quick select / q原创 2020-10-18 12:31:34 · 265 阅读 · 0 评论 -
66-机器人的运动范围
题目地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路回溯,使用bool数组记录是否已经走过,step记录走过的步数。代码注意bool数组必须初始化。int movingCount(int原创 2020-07-17 23:12:44 · 189 阅读 · 0 评论 -
数据结构--树--线索二叉树(中序,前序,后序)
线索二叉树在遍历二叉树的时候,会有许多空指针域,这些空间不存储任何事物,白白浪费了内存的资源。那么在做遍历的时候,提前记录下每个结点的前驱和后继,这样就更加节约了时间。 [ lchild ] [ LTag ] [ data ] [ RTag ] [ rchild ]LTag = { 0 : lchild 域指示结点的左孩子 1 : lchild 域指示结点的前驱 }RTag = { 0 : rchild 域指示结点的右孩子 1 : rchild 域指示结点的后继 ...转载 2020-05-24 17:03:31 · 1688 阅读 · 0 评论