- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 链表面试 - 复习链表中所有知识点及真题梳理 - 算法与数据结构面试分享(二十五)
今天在整理链表的知识点,基本上分为单链表,双链表,循环链表和双向循环链表,而每一种链表中有分是否带空值头结点。在链表中涉及的常规操作有四种1. 遍历2. 插入3. 删除4. 查找面试中还会出现一些比较复杂的操作,如:1. 合并2. 交叉与环3. 分离4. 排序链表中涉及的所有知识点包括如下方面。大家若是发现还有其他类型的话,欢迎补充,接下来打算全部梳理一遍,结合面试真题,写出具体的逻辑,和代码实...
2018-04-30 21:44:34 221
原创 排序算法专题:十大排序算法的前世今生,恩怨纠缠 - 算法与数据结构面试分享(二十四)
前几天花了些时间在整体排序算法专题,回顾了小我们接触过的所有排序算法。总结下来大概可以分为以下10种经典原型,说是原型是因为算法题总是在变的,但是万变不离其宗,我们总是能找得到原型的。这篇文章不会展开来讲哈,但是我们会描叙下它们的基本思想。敢兴趣的同学可以浏览到最后,我们会有更多的资源哈。一、 冒泡排序冒泡排序的基本思想来源于生活,小鱼在水底冒泡,上升的水面的过程中变得越来越大。扫描待排序的数组一...
2018-04-24 19:59:15 656
原创 栈的压入弹出序列 - 算法与数据结构面试分享(二十三)
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)栈的知识回顾:先进后出,所以如果我们入栈的顺序是1,2,3,4,5, 虽然在入栈的过程中可以任...
2018-04-23 22:18:50 170
原创 爬楼梯问题, 求有多少种走法。 性能二次改良- 算法与数据结构面试分享(二十二)
题目:我们在上楼梯的时候,假设我们一次上一个台阶,也可以上两个台阶,如果现在有N个台阶,请问它有多少种走法?能帮我实现一个算法吗?很多同学拿到这道题的时候,想到的是数学问题。不过很多人不小心就陷入了排列组合,在N中求出1与2的组合可能有多少?按照这种思路估计就解不出来这道题了。要理解这道题得从下面两个方面入手: 什么叫走法?假设我们现在有3个台阶,它的走法有(1,1,1),(1,2),(2,1),...
2018-04-20 21:31:02 639
原创 相邻差绝对值为1的数组中寻找目标 T - 算法与数据结构面试分享(二十一)
题目: 我们有一个数组A, 它相邻两个数的差的绝对值为1,如{1,2,3,4,3,2,3,4,5,4,5,6,7},现在给定某一个数字t,求其在数组中的位置。最暴力的算法就是遍历数组一遍,拿每个元素去和目标元素比较,在O(n)的复杂度内解决问题。然而,我们发现,有一个条件没有使用到对吧,相邻两个数的差的绝对值为1. 所以我们断定,这道题的复杂度可以比O(n)更低。大家可能会马上想到 O(logn)...
2018-04-18 22:24:35 890 1
原创 算法与数据结构面试分享(二十)设计一个带有min函数的栈
这是一道google的面试题。请帮忙定义一个栈,要求添加一个min函数,能够得到栈里的最小元素。要求min, push, pop的时间复杂度都是O(1).我们可不可以保存一个临时变量,每次入栈的时候拿入栈的元素和当前最小值去做比较,如果比当前的元素小我们就替换。好像目前是工作的,但是再往下想,如果我现在出栈呢?大家知道,栈里肯定有一个相对较小的元素,而此时,我们已经不知道它是多少呢?所以这种方法是...
2018-04-18 21:38:42 219
原创 算法与数据结构面试分享(十九)判断两个字符串是否模式相似
这是今天下午同事出的一道面试题,在线面试的,不过小伙十几分钟里没有搞定,同事是个妹子,很想给提示的,可惜小伙没给机会呀。看题哈。题目:首先给了一个定义,假设两个字符串的模式一样,我们就认为他们相似。举个例子,字符串1: “abb”,字符串2: “cee“。他们的模式是一样的,我们认为相似,能帮我实现一个算法,可以利用现有的库函数,语言不限,你有什么问题要和我确认的吗?题目出去了,线上的小伙蒙了。估...
2018-04-17 19:55:12 448
原创 算法与数据结构面试分享(十八)一排N(最大1M)个正整数+1递增,乱序排列,第一个不是最小的,把它换成-1,最小数为a且未知求第一个被
这是百度的一道面试题。一排N(最大1M)个正整数+1递增,乱序排列,第一个不是最小的,把它换成-1,最小数为a且未知。求第一个被-1替换掉的数原来的值,并分析算法复杂度。其实这道题并不难,关键是大家能否找出其中的陷阱并解决它。理解问题:1. 如果1-10的排序数组打乱顺序之后,我们拿掉其中一个并换成-1,大家能找出来吗?2. 如果一个等差数列,打乱顺序后,我们拿掉其中一个并换成-1,大家能找出来吗...
2018-04-16 19:22:42 289
原创 算法与数据结构面试分享(十七)两个单链表是否相交,若相交请求出交点
题目:已知两个单链表是否相交,若相交请求出交点。在前两篇博客的基础上,我们继续完善这道题,判断两个单链表是否相交,若相交我们求出他们的交点,这次我们将考虑带环的情况。算法与数据结构面试分享(十五)判断两个链表是否有交叉(单链表,不含环)算法与数据结构面试分享(十六)判断一个单链表是否含环,返回入口点大体的思路是,首先判断是否带环。1. 都不带环,但是相交,请看十六。2. 一个带坏,另一个不带环,这...
2018-04-15 20:55:25 187
原创 算法与数据结构面试分享(十六)判断一个单链表是否含环,返回入口点
题目:现在有一个单链表,请判断它是否带环,如果构成环,请返回环的入口点。这是接着上篇文章的讨论,留了两个问题,如何判断一个单链表是否构成环,有的话,返回它的入口点。之后我们再研究在构成环的链表中如何判断两个链表是否相交,这样我们上篇文章就完整了。上篇当中,我们提到了构成环的结构应该是类似于6的样子对吧。我们回忆一下,小学做过的数学题哈,两个小朋友在操场上跑步,一个快,一个慢,请问他们是否会相遇。大...
2018-04-05 00:36:16 225
原创 算法与数据结构面试分享(十五)判断两个链表是否有交叉(单链表,不含环)
题目:现在有两个链表,你能帮我判断两个链表是否有交叉吗?如果能帮我找出来交叉的节点最好。分析问题:我们首先想到的是暴力解法, n*n的复杂度,遍历一个链表的同时,再遍历另外一个链表,判断另一个链表里是否有节点是当前的节点。但是,我们再想象一下,链表交叉会是什么样的情况? Y型对吧?不可能是X型对吧(之前和很多候选人聊过,他们弄不清楚相交的场景,这说明对链表没有很深的认识),但是大家想一下,如果给出...
2018-04-04 23:01:40 308 1
原创 算法数据结构面试分享(十四)求无序数组连续和最大
题目:现在有一个整型的数组,能帮我求出该数组中连续最大和吗?请用最优的算法来实现。很多年前看到过这道题,说实话,第一次看到这道题的时候心里有很多疑问。1. 什么叫连续?2. 相加为什么还有最大一说?3. 最优的算法?说明有暴力解法,也有优化的解法给自己找个例子,看什么样的例子能够回答我们的前两个问题。大家停顿一下,等会再往后读。数组最大连续和注意1, 2, -2, 1, -2, -7, 1616前...
2018-04-04 20:36:14 696
原创 算法数据结构面试分享(十三)合并两个已排序的单链表
题目:给定两个单链表,并且两个单链表都是升序排列的,请将两个链表合并成一个升序的单链表。假定我们的第一个链表: 1=>3=>5=>6, 第二个链表: 2=>4. 合并之后的链表是 1=>2=>3=>4=>5=>6大家注意哈,链表是由各个节点组成的,我们再合并的时候是不能再申请新的节点了哈,只是将这些节点按照要求串起来,对吧。这道题比上一遍的题目...
2018-04-04 19:04:45 289
原创 算法数据结构面试分享(十二)合并两个已排序的整型数组
题目:给你两个已排序的数组,请帮我合并他们。要求合并之后的数组还是排好序的。有些同学拿到这道题后,想到的是申明一个新的数组,直接将两个数组合并进来,然后排序,题目中也没有要求复杂度。应该是过关的吧?其实不然,大家细细想下,这样的话我们会浪费一个条件,原来的两个数组已经是排好序的了。显然没有用上。看过我视频课程的同学可以已经知道了,我们再分而治之,归并排序的时候其实处理过这个问题,今天我们再单独拿出...
2018-04-03 20:24:45 287
原创 算法数据结构面试分享(十一)火眼金睛,从队伍里迅速找出那唯一的一个双胞胎
题目:假设你有一个用1001 个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1 到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗?仔细分析看过我之前文章或者我视频教程的同学可以已近发现了除了排序的算法之外,还可以通过...
2018-04-02 19:39:05 185
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人