随笔分类 - 算法
摘要:万事总要有个开头,来吧。 问题原题看情况,如果我能用中文准确地表述出来的话那就用中文说一下。也有可能完全不说… ■ twoSum 问题: 参数是一个数组nums和一个目标数target,寻找nums中两个数的和是target,返回这两个数的下标。同一个数不能重复使用。假设只有一个正确的解。 注意点:
阅读全文
摘要:【01背包问题】 背包问题是一类问题。通常其模型就是往一个背包里面装各种物品,来求一个极限情况时的物品明细或者某些物品属性。把这些描述给具体化可以得到很多不同分化的背包问题。 01背包问题是背包问题中基础的一类。其描述是: 有n个物品分别编号为a1,a2,a3...an。这些物品每个都有两个属性,分
阅读全文
摘要:■ 快速排序 个人感觉快速排序相对还好理解一些。大的框架上来说,快速排序使用的是递归的思想。 具体描述: 首先获取数组的第0元素作为一个基准(pivot),然后从第1元素开始向右遍历,将所有小于基准的值都尽量往左摆放。具体来说那就是在遍历过程中建立两个游标,一个游标i用来做全遍历,另一个游标d_in
阅读全文
摘要:【八皇后问题】 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子。皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子。在一个棋盘上如果要放八个皇后,使得她们互相之间不能攻击(即任意两两之间都不同行不同列不同斜线),求出一种(进一步的,所有)布局方式。 ■ 描
阅读全文
摘要:【摩尔投票】 问题: (majority element)若有一个数组L,长度为n,找出是否有一个数N,N的出现次数大于等于n/2。 问题不算太难,一般可以通过遍历计数,或者排序找中位数的办法来解决。但是如果要求时间复杂度是O(n),空间复杂度是O(1),那么恐怕就没那么简单了。摩尔投票算法正好是这
阅读全文
摘要:【二叉树】 二叉树是最为简单的一种树形结构。所谓树形结构,其特征(部分名词的定义就不明确给出了,毕竟不是学术文章。。)在于: 1. 如果是非空的树形结构,那么拥有一个唯一的起始节点称之为root(根节点) 2. 除了根节点外,其他节点都有且仅有一个“父节点”;除此外这些节点还都可以有0到若干个“子节
阅读全文
摘要:【Manacher算法】 这个算法用来找出一个字符串中最长的回文子字符串。 如果采取暴力解最长回文子字符串问题,大概可以有两种思路:1. 遍历出所有子字符串找其中最长的回文 2. 从每个字符作为中心,向两边扩散看是否回文。 第二种比第一种稍微高明一点,但是总体的复杂度还是O(n^2)的。 而Mana
阅读全文
摘要:栈和队列 容器数据结构是指一些包含了若干个其他相同或不同的数据结构的数据结构,被包含的这些每一个独立的数据结构都被称为一个元素,在一个容器中的元素往往支持相同的操作,具有类似的性质。之前说到过的线性表其实就是一种容器数据结构,本文中介绍的两种最常用的容器数据结构是栈和队列。 从功能上看,栈和队列大多
阅读全文
摘要:字符串 作为人机交互的途径,程序或多或少地肯定要需要处理文字信息。如何在计算机中抽象人类语言的信息就成为一个问题。字符串便是这个问题的答案。虽然从形式上来说,字符串可以算是线性表的一种,其数据储存区存储的元素是一个个来自于选定字符集的字符,但是字符串由于其作为一个整体才有表达意义的这个特点,显示出一
阅读全文
摘要:算法和算法分析 先说点无关紧要的。初中的时候,知道有CS这门专门的学科存在的时候最开始的概念中CS就是等同于算法。这有可能是因为当时的前桌是后来一代CS传奇WJMZBMR。。因为当时看起来十分高端,再加上后来努力的方向完全和CS不搭边,所以对于算法二字一直心中抱着一种敬畏之情,觉得是整个CS中最干的
阅读全文
摘要:记录一些在我看来有意思的小算法知识 ■ 识别有效的括号字符串 以小括号为例,在带括号的字符串中,如果只提取出括号作为特征,"()",""(空串),"(()(()(())))"这些是有效的括号字符串,虽然有嵌套但是没有乱套,每个左括号都可以找到正确的右括号配对 而")(())","(((","("等这
阅读全文
摘要:之前有说过最长公共子序列的问题,类似的还有一个两个字符串相似度的问题。 所谓相似度就是指一个字符串要至少通过多少次变化(插入一个新字符,删除一个字符,替换一个字符)才能变成另一个字符串。 在python中,我们有Levenshtein模块可以非常快速地得到结果:Levenshtein.distanc
阅读全文
摘要:最长公共子序列 算法这玩意儿我完全是外行,因为从头开始就不是这个专业的再加上从小就对逻辑性强的东西苦手。。所以一直没什么机会也没什么兴趣学。去年刚开始学习了python的那段时间曾经碰到过几个算法比较高级的问题,当时觉得果然这不是我的能力能驾驭的了的。。总之是先记录了下来,但是对于算法这块将来的拓展
阅读全文