Durant Thorvald's Blog

来自UCLA的一枚致力于改变世界的背包极客

滑动窗口是面试中一大难点,幸运的是我们有模板 滑动窗口 Sliding Windows,是一类很看重细节的问题,题目通常为Medium或者hard LC11.盛水最多的容器, LC76. 最小覆盖子串 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "...

解空间极大问题通用策略

"Giant Solution Space"

解空间极大问题通用策略 比如全排列问题,组合问题等。以78.子集为例。 全排列 组合 子集 ,每个元素可能存在或者不存在 要确保结果完整且不重复,有三种策略: 递归 回溯 字典 递归 递归不一定是递归函数,而是逐层次的把nums下一个数与前面的数融合起来。 比如: vector<vector<int>>...

背包问题

"Bag Problem"

1. 背包问题 题目:有一个容量为 V 的背包,和一些物品。这些物品分别有两个属性,体积 w 和价值 v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。 例子 背包最大容量:50 物品重量为:{10,20,30,40,60} 物品价值为:{1,3,5,7,9} 输出:8 解释:当选择物品重量为20,30或者10,40对应的价值最大。 0-1...

动态规划-自己的一点理解

"Dynamic Programming"

动态规划(DP)的重要性我就不用说了,LeetCode 上DP问题多达228道,仅次于数组301题。 个人感觉,DP问题就像斐波那契数列一样,你需要找到能够递归的通式子,我们把这个式子称作状态转移方程,没错,就是数电里面那个~ o( ̄▽ ̄)o。 然后,现在我们干一件事情,把DP题目罗列出来,找到共同点,未来我们要做到看一眼题目就知道用什么方法。 下面摘至Huahua’s ...

多指针问题

"Multiple Pointers"

多指针问题 很多时候多指针(双指针,三指针)能极大的帮助我们降低时间复杂度。 比如求链表到数第N个节点,以及判断链表中是否有环。 今天我们看LeetCode 75.颜色分类,原型是荷兰国旗问题。 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色...

图的几种表示方法

"Graphs"

图的几种表示方法 1.邻接矩阵表示法 如图:   也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有元素中,只有少量为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络中查找弧的时间。   同样,对于网络中的权,也可以用类似邻接矩阵的 矩阵表示。只是此时一条弧所对应的元素不再是1...

捣鼓这个该死的博客

"Bugs & More bugs"

上周,非常有幸接触到Hux大佬的博客,深感震撼,而且他也在Github上分享了Jekyll源码,star>5000。我决定DIY一番,不然对不起程序员的身份。 Bug 好不容易搭建好了,结果写好的markdown样子和Hux完全不同。 标签前面有#,而且是有标签的那种 图片不显示 公式不显示 语法没高亮,没行号 目录没显示 评论区没显示 这叫我...

如何让Unordered_map支持pair作为键值

"Pair as key of unordered_map"

C++ # 如何让Unordered_map支持pair作为键值 template<class T1, class T2> struct pair_hash//没这个pair 就不能在unorder——map快乐的玩耍了 { size_t operator() (const pair<T1, T2>& p) const { ...

C++内存管理

"C++ Memory management"

C++内存管理 内存管理是非常让人头疼的事情,因为一不小心就可能导致内存泄漏,为此很多C++程序员跑路到java或python,???但是反过来说,优秀的程序员知道如何管理内存,并显式获得速度的飞跃。 内存分类: 静态内存:用来保存局部static对象,类的static数据成员以及定义在任何函数之外的变量。 栈内存:用来保存定义在函数内的非s...

C++ IO库

"C++ IO interface"

参考资料:C++ Primer(5th Edition) C++、IO库 istream, wistream 从流读取数据; ostream, ostream 向流写入数据; iostream, wiostream 读写流; ifstream, wifstream 从文件读取数据; ofstream, wofstream 向文件写入数据; ...