算法草稿

常用算法集合

字符处理算法
数组与查找
链表

算法思路 递归、动态规划、BFS/DFS、双指针、二分法搜索
数据结构的使用 哈希、栈、队列、链表 哈希表的实现

由于时间关系,后面慢慢补充代码😝

基础
普通
进阶
疑难杂症

字符处理算法

1.字符串转数字
2.字符串全排列
3.翻转字符串
4.最长无重复子串
5.最长回文子串
6.KMP算法

动态规划

1.背包问题
2.连续子数组最大和
3.实现简单正则表达式

数组

1.求两个等长、有序数组的中位数(二分法)
2.有序数组中某个数字出现的次数(二分搜索)
3.求两个不等长、有序数组的中位数
4.旋转数组求最小值、【3】旋转数组求查找某个值是否存在(二分法)
5.每行从左到右,每列从上到下递增的二维数组中,判断某个数是否存在(剑指 offer 第 3 题)
6.数组中出现次数超过一半的数字
7.第 k 大的数(拓展:最大的 k 个数)

链表

1.反转链表(使用递归和迭代两种解法,了解头插法)
2.删除链表的当前节点
3.删除倒数第 k 个节点
4.两个有序链表合并
5.复杂链表的复制
6.判断链表是否有环
7.两个链表的第一个公共节点(提示:考虑链表有环的情况)
8.删除链表中重复节点

1.根据中序和后序遍历结果重建二叉树
2.翻转二叉树
3.从上往下打印二叉树 (BFS 的思想)
4.判断某个数组是不是二叉树的后序遍历结果
5.二叉树中和为某个值的路径
6.二叉树中某个节点的下一个节点
7.根据中序和前序遍历结果重建二叉树

1.用两个栈实现队列
2.两个队列实现栈
3.实现一个栈,可以用常数级时间找出栈中最小值
4.判断栈的压栈、弹栈序列是否合法

排序

1.归并排序 球数组中求逆序对个数
2.快速排序
3.堆排序
4.数组元素值域已知时,考虑基数排序和桶排序

位运算

1.给一个十进制数字,求它的二进制表示中,有多少个 1 (n &= n - 1)
2.给一个数组,所有数字都出现了偶数次,只有一个出现了一次,找出这个数
3.给一个数组,所有数字都出现了三次,只有一个出现了一次,找出这个数
4.给一个数组,所有数组都出现了偶数次,只有两个数字出现了一次,找出这两个数

反转链表
二分查找
二分法
冒泡排序
数据结构(链表、二叉树、算法时间复杂度、空间复杂度)
二叉搜索树
T9算法如何实现,全拼算法
最短路径算法
强连通量算法
连连看算法
求两个整数最大公约数

微信用户都是双向的好友,a是b的好友,那么b一定是a的。给定一个用户列表,有些用户是好友,有些不是,请判断,这些用户是否可以划分为两组,每组内的用 户,互相都不是好友。如果能,请给出这个划分

算法题:说 预约会议室,会有n个团队预约当天会议室,时间各不相同,求最少需要几个会议室。比如:1预约的时间是[9-11], 2预约的时间是[10-12], 3预约的时间是[12-14], 此时会议最小个数是2个

常用算法

#######1.分治算法
算法的思路是什么?
:把一个问题分解成许多相似的子问题,是用递归等方法,把结果汇聚到一起。
分治算法什么时候适用?
1.该问题缩小到一定规模就可以容易解决
2.该问题可以分解为若干规模较小的相同问题(具有最优子结构性质)
3.关键因素:该问题的解可以由分解出的子问题的解合并得出。(如果满足1,2不满足3可以考虑用贪心法或动态规划法)
4.影响效率的因素:分解出的每个子问题之间相互独立,不包含公共的子问题。(如果子问题不各自独立,则分治法需要做许多不必要的工作,此时用动态规划法更好)

分治算法解决的经典问题
(1)二分搜索
(2)大整数乘法
(3)Strassen矩阵乘法
(4)合并排序
(5)快速排序
(6)线性事件选择
(7)线性时间选择
(8)最接近点对问题
(9)循环赛日程表
(10)汉诺塔

#######2.动态规划算法
算法思路是什么?
:每次计算都会影响之后的计算
类似于分治算法,把问题拆分成小问题计算,和分治法的区别在于:下一个子问题的求解建立在上一个小问题的结果基础上
什么时候使用动态规划算法?
能采用动态规划算法一般要满足3个条件
1.最优化原理,问题的最优解所包含的子问题都是最优解,具有最优子结构的特点
2.无后效性,某一阶段一旦确定,不会受后来的影响发生变化
3.有重复子问题:子问题之间不独立,一个子问题在下一个阶段决策中可能被多次使用到。(最影响效率的条件,满足该条件才能提现出动态规划算法的优势)

动态规划基本框架

#######3.贪心算法
贪心算法的思路是什么?
:计算的每一步都是当前的最优解,不去考虑全局最优解的情况
适用条件
1.无后效性
2.局部最优导致全局最优

贪心算法的实现框架

从问题的某一初始解出发;
while(能朝给定总目标前进一步)
{
利用可行决策,求出可行解的一个解元素;
}

由所有解元素组成问题的一个可行解

#######4.回朔法
一种有限深度算法,每次发现现在的选择是不正确的,于是回到之前的节点进行其他计算,而现在的节点称为回朔点
用回朔法解题的一般步骤:
(1)针对所给问题,确定问题的解空间(至少包含问题的一个最优解)
(2)确定节点的扩展搜索规则
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数,避免无效搜索。

#######5.分支界限法
类似于回溯法,也是一种在问题的解空间树上搜索问题解的算法。
区别:回溯法求解目标是找出满足约束条件的所有解而分支限界法的求解目标是找出满足约束条件的一个解,某种意义下的最优解

大脑喜欢问题。当你在学习或读书过程中提出问题的时候,大脑会自动搜索答案,从而提高你的学习效率。从这个角度说,一个好的问题胜过一个答案。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容