lucifer

听说逆向思维能够降低时间复杂度?

  |  

以终为始在日常生活中指的是先确定目标,再做好计划。之前读管理学的书的时候,学到了这个概念。

而在算法中,以终为始指的是从结果反向推,直到问题的初始状态

那么什么时候适合反向思考呢?简单的原则就是:

  1. 正向思考的情况比较多
  2. 代码比较难写或者算法复杂度过高

这个时候我们可以考虑反向操作。

我的习惯是如果直接求解很难,我会优先考虑使用能力检测二分,如果不行我则会考虑反向思考。

关于能力检测二分,可以在我的公众号中找到,大家可以在《力扣加加》回复二分获取。

今天西法通过三道题来给大家聊聊到底怎么在写算法题的时候运用以终为始思想。

背景

给一个两个数组,其中一个数组是 A [1,2,3,4],另外一个数组是 B [5,6,7,8]。让你求两个数组合并后的大数组的:

  • 最大值
  • 最小值
  • 总和

这题是不是很简单?我们直接可以很轻松地在 $O(m+n)$ 的时间解决,其中 m 和 n 分别为数组 A 和 B 的大小。

那如果我可以修改 A 和 B 的某些值,并且我要求很多次最大值,最小值和总和呢?

朴素的思路是原地修改数组,然后 $O(m+n)$ 的时间重新计算。显然这并没有利用之前计算好的结果,效率是不高的。 那有没有效率更高的做法?

有!线段树就可以解决。

如何有效学习算法

学习算法的基本思路就是:先学习算法思想,然后通过做题消化思想,并在做题过程中慢慢学习,掌握一些小技巧。这其中算法思想就是,而经典题目以及做题技巧就是。做题是通过术来完善道。

但是很多人都反应看讲义和做题之间断层严重,也就是一看就会,一些就废。这怎么办呢?

其实很多朋友私底下问我:

  • 新书什么时候出版?
  • 可以预定么?
  • 等等

其实我比大家更着急,只不过出版图书真的是一个非常严谨的过程。不比专栏,小册等电子读物可以一边上架一边修改。传统的纸质图书的要求和流程都是严格把控的。因此只能耐心等待和配合出版社。 而现在《算法通关之路》终于要和大家见面了!🌹🌹🌹

力扣加加,一个努力做西湖区最好的算法题解的团队。就在今天它给大家带来了《91 天学算法》,帮助大家摆脱困境,征服算法。

第五期本来想和力扣官方合作一起搞,这样打卡就可以无缝衔接,如果你有力扣会员甚至可以免费参加。可是力扣官方给的感觉是:快了,已经在新建文件夹了。 就好像我虽然还是 行号 0, 列号 0,字数 0,但是却和催更的读者说快写好了一样。

因此第五期我们就先开始吧!

大家好,我是易潇,也是 91 算法群里大家熟悉的狗头。最近申请和面试基本结束,刚刚过了Google 的 HC

我的本科读的是商学,所以算是文科转码0基础转码的一员。在这里想跟大家分享一下我面对面试刷题的心得~

注:Google 的招人模式比较特别,过了 HC 可以视为被 Google 接受并且已经结束了所有技术性面试,简称过了。具体关于申请 Google 的信息会在后续的文章中跟大家分享,敬请期待。

背景

最近得知 cabbage 拿到了微软的 offer,并在准备拿其他更大公司的 offer。就迫不及待地联系了他,希望他本人可以接受采访。于是这篇采访稿就和大家见面了。

cabbage 是一个做事情非常认真细致的人,对待工作一丝不苟,基本上事情交给他你就可以放心那种,这样的人谁不喜欢?我本人非常看好他,一定可以进更好的公司。

以下 Q 为 lucifer,A 为 cabbage。

手把手教你刷搜索

  |  

大话搜索

搜索一般指在有限的状态空间中进行枚举,通过穷尽所有的可能来找到符合条件的解或者解的个数。根据搜索方式的不同,搜索算法可以分为 DFS,BFS,A*算法等。这里只介绍 DFS 和 BFS,以及发生在 DFS 上一种技巧-回溯。

搜索问题覆盖面非常广泛,并且在算法题中也占据了很高的比例。我甚至还在公开演讲中提到了 前端算法面试中搜索类占据了很大的比重,尤其是国内公司

搜索专题中的子专题有很多,而大家所熟知的 BFS,DFS 只是其中特别基础的内容。除此之外,还有状态记录与维护,剪枝,联通分量,拓扑排序等等。这些内容,我会在这里一一给大家介绍。

另外即使仅仅考虑 DFS 和 BFS 两种基本算法,里面能玩的花样也非常多。比如 BFS 的双向搜索,比如 DFS 的前中后序,迭代加深等等。

关于搜索,其实在二叉树部分已经做了介绍了。而这里的搜索,其实就是进一步的泛化。数据结构不再局限于前面提到的数组,链表或者树。而扩展到了诸如二维数组,多叉树,图等。不过核心仍然是一样的,只不过数据结构发生了变化而已。



博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 。
载入天数...载入时分秒...