摘要:
这里我只是简要的总结下STL中的空间配置器的知识。 (一)为什么需要空间配置器 1、内存碎片问题:在软件开发,程序设计中,我们不免因为程序需求,使用很多的小块内存(基本类型以及小内存的自定义类型)。在程序中不断动态申请,释放。 内碎片:因为内存对齐/访问效率(CPU取址次数)而产生 如 用户需要3字 阅读全文
摘要:
在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。 拓扑排序常用的两个方法 1、减治技术 所以拓扑排 阅读全文
摘要:
给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路:要求所有路径这种所有解问题,要想到深度优先遍历。这里我们采用深入优先遍历,递归的方式来实现。其中涉及到int型转string型的知识。 int转string。 (1)c++中的<string>中 阅读全文
摘要:
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。 假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃 阅读全文
摘要:
题目大意是只有一艘船,能乘2人,船的运行速度为2人中较慢一人的速度,过去后还需一个人把船划回来,问把n个人运到对岸,最少需要多久。先将所有人过河所需的时间按照升序排序,我们考虑把单独过河所需要时间最多的两个旅行者送到对岸去,有两种方式:1.最快的和次快的过河,然后最快的将船划回来;次慢的和最慢的过河 阅读全文
摘要:
贪心,顾名思义,就是在把一个大问题分割成无数个相类似的子结构之后,对于每一个子结构,只在乎当前,贪心考虑最优选择,无需考虑整体最优。用专业一点的术语来说,就是无后效性。 具体来说,面对一个大问题,截取当前的一小部分,在这个小部分中选择最优最好的结果。然后以一种迭代,也就是递推的方式选取相似的下一小部 阅读全文
摘要:
给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列,使其相对于 B 的优势最大化。 示例 1: 示例 2: 思路:把A的全排列的各种情况都考虑一下,找到最多的优势,然后将该排列输出,代码如下 不过,next_ 阅读全文
摘要:
从正整数 N 开始,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。 示例 1: 示例 2: 示例 3: 示例 4: 思路:这个题的重点是求出数字的全排列(以0开头的除外),和数字是否2的幂 首先 阅读全文
摘要:
给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。 示例 1: 示例 2: 示例 3: 思路:这道题是比较简单的题目,我们只需要将数字转为二进制,然后记录里面1的最大距离。 上述方法比较繁琐。是用一个flag作为标志,来判断是第一 阅读全文