快速突破面试算法之分治算法篇

一、前言:分治的来源

  根据博主的浅薄知识,我是这样理解的。分治、分治,我们分开来理解!把分治拆成分开和治理。

  大家想想一个皇帝(是不是大家都有皇帝梦)想要统治一个国家,一般都不会他一个人管理每一个人,上至宰相、下至贫民。什么事都去找皇帝,他哪有时间快活啊。

  所以聪明的皇帝就把自己管理的人分成了几个大模块,由自己信任的人去管理,他来管理这几个大模块的领袖。那岂不是皇帝就有很多快乐玩耍的时间了!

快速突破面试算法之分治算法篇_第1张图片

 

一个事情分开几块来做,有一个科学的术语叫做:解耦!         高内聚,低耦合!高并发  怕不怕~~~~

快速突破面试算法之分治算法篇_第2张图片

 

高并发砸门以后再说!!!   分治的大概概念就是这样:一个事情分成几份做完后再提交结果汇聚一处,完成~

二、分治:分分合合

   1.形象的例子

  分分合合,我说的不是情侣哈。又扎心了~~~     扎的越深,我越想努力赚钱。

  说到钱,举一个钱的例子

  快速突破面试算法之分治算法篇_第3张图片

    存钱罐,大家应该大多数都有吧。没事就把钱往里面塞。塞满后,到了最开心的环节了:数钱!!  一大堆钱,可能你看着就不想算了。全是1分的,当场自闭。苍蝇也是肉,照样吃。

所以为了不要那么腻,我们不可能一口气全部吃完。 所以我们要分小份小份数。然后最后把每小份的钱加起来就是总数了。这样钱也到手了,自己也不会太烦躁(免得当场吞硬币)。

贫穷的我只能画画钱,想想。。

快速突破面试算法之分治算法篇_第4张图片

 

  2、主要的思想

    当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想-----百度百科(信权威,得永生)

  3、典型的例子:

 二分法简单的一种分治,将一个数组一直分一半,直到找到想要的结果。可见下面这个写的棒棒的博文!

https://blog.csdn.net/qq_40262372/article/details/112572853

进阶级别的就是快排了,快排就是一直取区间,然后将小于选定数A的区间放在A的左边,大于的都放于右边,可见如下博客(阿里巴巴大佬的):

https://blog.csdn.net/nrsc272420199/article/details/82587933?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

 

三、一切理论都源于实践,多刷题领悟其中精髓才能真正掌握!

 

四、分治相关的面试高频题目录

1.为运算表达式设计优先级(力扣 241)        博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112666404

2.不同的二叉搜索数II(力扣95)                    博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112666646

 

五、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

 

六、如有疑问可加QQ群讨论:725936761     博主免费答疑
欢迎大家一起讨论进步。后续遇到相似的题会继续更新!

群里已有字节、滴滴大佬,可帮忙内推!也欢迎其他大厂的工作人士进群!帮忙内推~

为了鼓励大家坚持,当天打卡人数超过一半,群主发一个红包(群主是学生),激励大家坚持下去!希望以后找工作的时候大家能互捞一下~~~

 

B站视频讲解如何三个月学习JAVA拿到实习Offer:

https://www.bilibili.com/video/BV1dV411t71K

 

你可能感兴趣的:(面试刷题必备,分治算法,算法,leetcode,面试,java)