- 博客(4)
- 收藏
- 关注
原创 快速排序Partition的写法
快速排序的重点在于Partition的写法,Partition主要有两种写法:从头前进法,首尾夹逼法。 Partition写法一 首先需要做出求解问题的区间,为此,指定 pivot = nums[left],并定义两个变量 i, j [left+1, j] 区间所在元素都小于pivot (j, i]区间所在元素都大于pivot 初始化 i 和 j 都是left,可以写出如下代码: int partition(int *nums, int left, int right) { .
2021-10-18 01:23:56
2358
原创 谈谈算术表达式的求解
一、转换成后缀表达式后计算 中缀表达式:操作符以中缀形式处于操作数的中间 后缀表达式(逆波兰表达式):将运算符放在两个运算对象的后面 例如,中缀表达式 A+B*(C-D)-E/F 对应的后缀表达式为 ABCD-*+EF/-,一般有三种方法进行转换 得到后缀表达式后的算术表达式求解过程如下: int stringToNumber(const string &s) { int sign = 1; int start = 0; if (s[0] == '-') { ...
2021-10-18 01:17:12
1347
原创 二叉树的非递归遍历写法
二叉树的非递归遍历写法 前序遍历 前序遍历是按照“中-左-右”的遍历方式对二叉树进行访问 第一种写法 第一种写法较为直观,模拟递归栈的做法,先获取到当前节点,进行打印,然后将该节点的右子树和左子树的根节点分别入栈,再将左子树的根节点出栈,对该节点进行同样处理。由于我们希望得到“中-左-右”顺序,在打印完中节点之后,我们将右节点在左节点之前入栈,根据栈的后入先出的原则,我们先取到对应左节点进行处理。 vector<int> preOrder(TreeNode *root) { ..
2020-12-07 02:10:49
317
原创 leetcode1066 校园自行车分配II
leetcode1066 校园自行车分配II 题目描述 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m。所有工人和自行车的位置都用网格上的 2D 坐标表示。 我们为每一位工人分配一辆专属自行车,使每个工人与其分配到的自行车之间的曼哈顿距离最小化。 p1 和 p2 之间的曼哈顿距离为 Manhattan(p1, p2) = |p1.x - p2.x| + |p1.y - p2.y|。 返回每个工人与分配到的自行车之间的曼哈顿距离的最小可能总
2020-11-07 12:41:55
1047
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人