随笔分类 - 算法
摘要:一、组合总和问题 最近在看leetcode的组合问题,一共四道,总结一下共通之处与不同之处。 原题链接: 组合总和 组合总和II 组合总和III 组合总和IV 对比如下,为了便于对比,将原题目的叙述方式进行了修改。 问题 输入 取值限定 解集限定 解法 I 无重复元素的数组 candidates且全
阅读全文
摘要:《算法导论》图相关的内容贯穿很多章节,适用条件各异,而且都有证明过程。如果不打算熟记证明,仅仅是应用,遇到具体场景再去回忆适用于哪种算法不太方便。汇总一下便于查阅。
阅读全文
摘要:区块链和其基础之一的SHA256算法的理解和算法伪码。
阅读全文
摘要:侧重于介绍三者关系,详细的分析见文中链接。
阅读全文
摘要:2013年写的,本来打算收集些杂题,后面也没有需要继续收集的,单独发出来。 实现一个array_diff函数,找出2个或多个数组中唯一存在的数字,组成新的数组。比如:array_diff( [1, 2, 3, 'a'], [2, 3, 4, 'b'], [3, 4, 5, 'd']) // 返回 [
阅读全文
摘要:《算法设计手册》上正文部分提到的一些有趣问题,由于所处位置与其章节关联不大,因此没有整理到之前的博文中。这里的3道问题是:归纳法找递归函数输出、动态数组的时间复杂度、最小堆第k小的元素与给定x的大小关系。
阅读全文
摘要:主要是对一些常见的动态规划题目的收集,从硬币找零、编辑距离、lis、lcs到数组最大和/积、0-1背包、工作量划分等一共11个问题以及附加的10个扩展或相关问题的分析与求解,希望能帮助读者增加解题经验,锻炼将原问题分解成子问题并由子问题的解求解原问题的能力。
阅读全文
摘要:本文以《算法设计手册》第7章回溯法部分介绍的回溯法框架为基础,分析并展示如何运用这个高度抽象的框架解决一般性的问题如组合问题、数独求解、烙饼排序、八皇后等等,同时介绍了回溯法中的剪枝策略,对理解回溯法很有参考价值。另附这一章节的面试题解答。
阅读全文
摘要:第五章面试题目只有两道,而且研究价值不大,只做了简单解答。本文重点是介绍利用DFS来寻找无向图上的挂接点,即从连通图中删除后会导致图不再连通的结点。
阅读全文
摘要:《算法设计手册》(The Algorithm Design Manual)课后面试题和解答。主要内容包括:大量整数排序问题、寻找数组中只出现一次的元素、O(1)时间复杂度获得栈的最小值、最短摘要生成、12个硬币找出假币等问题。
阅读全文
摘要:《算法设计手册》(The Algorithm Design Manual)课后面试题和解答。主要内容包括:生活中的查找情形、二叉树判断全等、二叉搜索树转化为双链表、URL的存储结构、hash表应用情形等。
阅读全文
摘要:《算法设计手册》(The Algorithm Design Manual)课后面试题和解答。包括:未知大小的集合选取k个元素、数据备份方案、寻找数组最小数时赋值语句执行次数的期望、100层大楼抛大理石(抛灯泡)、电子秤找不足量金币、天平找重球、公司合并方案总数、海盗分赃等。
阅读全文
摘要:《算法设计手册》(The Algorithm Design Manual)课后面试题(Interview Problems)和解答。包括:不用*和/做整数除法、25匹马找出前5名问题、以及一些不做解答的估算题的样例。
阅读全文
摘要:又要到一年招聘季,又有很多人开始啃《编程之美》了吧。此书从开阔视野的角度来说很好,不过限于篇幅,有的问题并没有讲清楚;或者扩展问题很难,没有给予解答和提示。在我看书和查阅资料的过程中,有很多重复的,也有不少基本没什么价值。为了便于查阅,也为了方便后人不必在搜索上浪费时间,我把比较有价值的文章链接整理如下,并附以说明。
阅读全文
摘要:对于《编程之美》4.5磁带文件存放优化一般情况的最优解给与证明,并发掘解法与选择排序的关系。
阅读全文
摘要:本文来自于《编程之美》4.3节买票找零问题的启发,和网络上多如牛毛的介绍卡特兰数的文章不同,本文的主要目的不是向读者再一次介绍它的性质和应用,也不是相关内容的简单复制粘贴拼凑,而是一个完整的体系,帮助读者跨越《编程之美》留下的陷阱,找寻一般化的卡特兰数,从而解决更一般的问题,并给出证明和程序实现。
阅读全文
摘要:简单介绍判别两个链表在无环/有环情况下是否相交的判别法,并收集了找出相交的第一个节点、求链表倒数第k个结点等相关问题,然后对单链表找环算法和找单链表环入口算法给出形式化的证明
阅读全文
摘要:对于《编程之美》上没有提供答案和提示的1.18和4.11两节,本文将综合网络上已有的部分资料,深入挖掘解题思路,并对目前尚未找到满意答案的1.18节问题1给出算法解答。阅读本文需要了解古典概型和组合数的含义,以及扫雷游戏中的各种符号。
阅读全文
摘要:本文主要介绍和字符串、序列相关的三大类问题的算法和它们衍生的问题:字符串左移(或称左旋、翻转)、最长重复子序列、最大连续子序列;除此以外,另外附了一段字符串哈希方法作为对字符串操作的补充。虽然标题和文章都很长,但介绍的问题并不多,只是做了较多的延伸和探讨。
阅读全文
摘要:本文不局限于具体的二分搜索算法和排序算法,而是提炼其中的思想,并将其应用到其他与它们似乎没有直接关系的问题中,从而获得高效的解决算法。主要解决的问题:线性期望时间的随机元素选择问题、大数据中找出一组重复元素、英文字典求所有变位词、子集元素的最小和。
阅读全文