看不清
√十天内免登录忘记密码?
还没账号?马上注册
请复制以下内容发送给他人,通过邀请链接访问完成注册,您即可享受长期收益:
适合人群: 适合于学生、正在找工作的、有志挑战BAT、google, 微软等一流企业、工作时间不长想修炼内功的各位同仁。对基础数据结构有一定的了解,建议从第一系列视频(数据结构与算法)开始看。
课程标签: BAT微软google经典算法数据结构
我们总结出了BAT,微软,google频繁出现的经典的算法面试题,在此分享给大家。和常规的数据结构与算法的辅导有很大区别,我们的特色是:1. 从问题出发,灵活运用多种数据结构2. 比较优缺点,多种思路,逐步优化,让你挖掘每一道题的经典之处3. 教你面试,帮助你掌握技巧,打动面试官4. 手把手带你编程,一题多解,让你彻底吃透5. 分享代码,从基础解法到进阶解法,让你脱颖而出
6. 大量真题带你深刻理解递归
所以,这不是一套单纯的视频教程。我们保证每题都有代码,每题的代码都是手把手带着你写的。除此之外,我们还会有公众号定期推送,blog更新,QQ群讨论,最后我们还会提供github源码
该问题的本质是什么? ‘1’与 1 的不同。字符在内存里是如何存贮的,我们如何巧妙的绕过ASCII码来求出字符‘1‘对应的1呢?
首位要特殊处理,熟练掌握跌罗汉求累积和,并处理越界
求两两的差最小,说明我们要找两个非常接近的数哈。我们可以用暴力的解法,两两做差,复杂度是n*n,假设我们排好序了呢?这样的话我们的复杂度就变成了排序的复杂度了,所以我们一起在排序上做文章。
• 用 n*n的方法,for套for两两比较,取差值再比较 • Nlongn, 排序,相邻的两个数做差,取较小的 • 桶排序 – 思路很好,但是也不能完美解决问题
求排列不光是简单的数学知识,其实可以用递归,让计算机解决
排序数组到排序二叉树,深刻理解排序二叉树的构建及特点。在排序二叉树中,我们知道它的中序遍历结果就是一个升序数列,左子树比根小,右子树比根大。不过我们还要考虑如何构建这样的二叉树。
我们只见过树的前序遍历,中序遍历,后序遍历。单这道题要处理的是层次遍历。我们怎么能够在遍历的过程中将节点保存下来,巧妙的实现层次遍历呢?更重要的是,我们最好是将结果返回出来交给调用方去处理,而非控制台打印。所以这题得使用多种数据结构。
反转单链表有常规的解法,要求我们灵活的控制指针,在改变指针之前要将它之后的元素先保存下来,否则我们就破坏了原来的结构。当然,这是一道很好的题,让我们去理解递归,一旦理解了递归我们就很容易的把反转给解决了。同时,我们还可以借用栈来辅助我们。采取什么方法解题,还得看我们和面试官怎么沟通的哈,看题中还有没有额外的要求。
链表反转,深刻理解递归,栈以及指针熟练操作
首先我们要理解整型的除法运算时如何工作的。其实在计算机中,我们的乘2除2操作都是通过移位来处理的,这是一个逻辑运算,速度相当的快。计算机组成原理里,我们可以一起学过加法和减法器,而这道题其实就是通过减法来实现除法操作。它的扩展题还有处理两个大数相加问题。
排序数组中找到某个数出现的次数。这道题中有常规的解法,我们扫描一遍,计数就好了。虽然只是n的复杂度,但是这道题还有更优的解法,我们先用二分查找,找到了之后再向两遍扩展,然后计数。大家可以自己尝试一下。
如何才能找到斜率最大的那条线?我们可以先画下图,在二维坐标轴中,画出来之后我们能发现其实它们是排好序的。我们就知道斜率最大其实只用比较两个相邻的直线。那问题就简单了,我们先排序,计算相邻点的效率,再比较。再设立一个哨兵。结果也就出来了
相连的5个数中我们如何判断他们是否连续呢?这个很简单,我们排好序了再把最大的减掉最小的,判断一下差值,我们就能断定它是否连续了。问题是,这里有一个万能的0,它能代表任意的数。我们一起来举一些例子,将问题具体化,挖掘其中的规律。思路清晰了,我们就能很轻松的实现代码了。5个数值允许是乱序的。比如: 8 7 5 0 6- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4- 0可以多次出现。- 复杂度如果是O(n2)则不得分。
找共同父亲,这又是一道经典的递归问题。在多家面试被面过。假设这个共同父亲被找到了,它一定会满足左子树包含目标节点1,右子树包含目标节点2,反之亦然哈。我们发现,需要一个函数来解决”包含”问题。那我们就从根节点开始,如果不满足,再递归左子树,然后右子树。
找所有的X和Y满足X+Y=Target。这个很容易来解决,扫描一遍即可。可以仔细思考之后我们发现,这里还有一个条件,数字很大,做加法的话可能就会出问题,越界了。那我们就换加法为减法,避免这个问题。大数,是B和T经常考的。
查找树转双向链表,我们依旧选递归。二叉树和双向链表中有着非常相似的定义。都是数据域和两个指针域,只是指向的方式不同。二叉树中不存在双向问题,不过大家如果记得线索的话,我们也是能够从当前节点获取它的父亲节点的哈。我们将问题定义成递归,找出递归式和退出条件,这个问题就迎刃而解了。
首尾交换的变形,再来两次就解决了问题
倒数第K个,怎么样更优化?我们可以遍历多次来解决问题,在面试官的质疑下,我们再来优化它,两个指针,合理安排,先步调不一致,之后再步调一致,这个问题在O(N)的复杂度下就得到了解决
排序数组技巧处理
欢迎进入课程讨论区,你可以与本课程的老师和同学在这里交流。如果你有课程相关的问题,请发到老师答疑区;经验、思考、创意、作品、转帖请发到综合讨论区。欢迎分享,鼓励原创,杜绝广告,请大家共同维护一个包容、积极、相互支持的交流氛围,谢谢。了解更多请点击“讨论区使用规则”↗
给该课程打分:
观潮阁
上下求索
序号
标题
1
BAT微软google经典面试算法题精讲.pptx
2
经典算法讲解源代码.zip
共36节 · 16小时20分钟
数据结构视频教程
¥78.0010769人在学
共103节 · 55小时58分钟
2024信息系统项目管理师视频教程
¥699.00126727人在学
共21节 · 4小时10分钟
OpenCV视频教程
¥30.0011333人在学
共30节 · 26小时29分钟套餐优惠
信息系统项目管理师【第4版本】视频教程
¥399.002429人在学
评价
给该课程打分: