快速突破面试算法之分治算法篇
一、前言:分治的来源
根据博主的浅薄知识,我是这样理解的。分治、分治,我们分开来理解!把分治拆成分开和治理。
大家想想一个皇帝(是不是大家都有皇帝梦)想要统治一个国家,一般都不会他一个人管理每一个人,上至宰相、下至贫民。什么事都去找皇帝,他哪有时间快活啊。
所以聪明的皇帝就把自己管理的人分成了几个大模块,由自己信任的人去管理,他来管理这几个大模块的领袖。那岂不是皇帝就有很多快乐玩耍的时间了!
一个事情分开几块来做,有一个科学的术语叫做:解耦! 高内聚,低耦合!高并发 怕不怕~~~~
高并发砸门以后再说!!! 分治的大概概念就是这样:一个事情分成几份做完后再提交结果汇聚一处,完成~
二、分治:分分合合
1.形象的例子
分分合合,我说的不是情侣哈。又扎心了~~~ 扎的越深,我越想努力赚钱。
说到钱,举一个钱的例子
存钱罐,大家应该大多数都有吧。没事就把钱往里面塞。塞满后,到了最开心的环节了:数钱!! 一大堆钱,可能你看着就不想算了。全是1分的,当场自闭。苍蝇也是肉,照样吃。
所以为了不要那么腻,我们不可能一口气全部吃完。 所以我们要分小份小份数。然后最后把每小份的钱加起来就是总数了。这样钱也到手了,自己也不会太烦躁(免得当场吞硬币)。
贫穷的我只能画画钱,想想。。
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
快速突破面试算法之分治算法篇相关推荐
- 2.Python算法之分治算法思想
1.什么是分治算法? 2.为什么需要分治算法? 3.分治算法基础 4.分治算法的解题一般步骤 5. 用分治算法--求顺序表中的最大值 5. 用分治算法--判断某个元素是否在列表中 6. 用分治算法-- ...
- 分治法的关键特征_算法系列之常用算法之一----分治算法
一.基本概念 在计算机科学中,分治法是一种很重要的算法.分治算法,字面上的解释是"分而治之",分治算法主要是三点: 1.将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问 ...
- 贪心算法、分治算法和动态规划的区别
贪心算法.分治算法和动态规划的区别 (1)分治法(divide and conquer method) 将原问题划分成若干个规模较小而结构与原问题相似的子问题,递归的解决这些子问题,然后再合其结果,就 ...
- 搞定面试算法系列 | 分治算法三步走
戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...
- 算法- 递归算法 分治算法
递归算法 (1)递归需要满足的三个条件 一个问题的解可以分解为几个子问题的解 何为子问题?子问题就是数据规模更小的问题. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 存在递归终止条 ...
- 五大常用算法之一——分治算法
分治算法(Divide and Conquer) 分治算法,简单理解就是把一个大规模的问题分成相同或者相似的子问题,直到最后子问题能很容易的求解,原问题的解通过子问题的解合并得到. 根据这个描述,我们 ...
- 十种常用算法之分治算法(java版)
十大常用算法的完整实现 一.二分查找算法:https://blog.csdn.net/weixin_46635575/article/details/121532149 二.分治算法:https:// ...
- 【Java算法】分治算法
1.什么是分治算法? 分治法(Divide-and-Conquer)是一种很重要的算法. 分治就是"分而治之"的意思,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子 ...
- 算法8.分治算法计算a^n
设a为一给定实数,设计一个分治算法,用于计算an (n为自然数),并分析其计算时间复杂度,要求该算法的计算效率高于蛮力算法. 1. 算法设计思路 1.当n为偶数的时候,an可以分治为(a^2/n)*( ...
- 【Java -- 算法】分治算法、动态规划、回溯法、贪心算法
前言 一句话理解四种算法思想 分治:分而治之,先解决子问题,再将子问题的解合并求出原问题. 贪心:一条路走到黑,选择当下局部最优的路线,没有后悔药. 回溯:一条路走到黑,手握后悔药,可以无数次重来.( ...
最新文章
- 面试题--特别是字节对齐
- 前端网页、php与mysql数据库字符编码(解决中文等乱码问题
- [ 1001] 动态开辟二维数组的说明
- 别吵吵,分布式锁也是锁
- 使用ultramon调整任务栏高度
- log4j 2.x --LogManager
- jQuery必知要点(一)
- 下滑加载更多js_专治:卫生间免砸砖,房顶漏水,JS堵漏王水不漏,厂家三包产品,免费成熟配方(点开看更多)...
- Nginx实用指南V1 (连载之六:cacti监控)
- 修复windows脸部识别_如何在Windows 10中改善面部识别
- 法语写信_为我们写信:我们最热门的19个主题
- python运行不了程序代码_Python源码分析2 - 一个简单的Python程序的执行
- ORACLE报错:enviroment variable ORACLE_SID not defined,please define int
- 企业微信发送消息php,PHP实现微信模板消息发送给指定用户
- 2008下搭建easypanel(康乐)虚拟主机控制面板
- iphone上下左右手势判断代码
- win7万能声卡驱动_驱动精灵标准版 v9.61.3708.3054下载
- k折交叉验证优缺点_都说K折交叉验证最常见,你会做吗?
- 【大数据开发必看】项目一 电信客服
- HTML5编写船上航行,描写帆船航行的诗句
热门文章
- string字符串比较
- 禅道备份功能_禅道备份处理
- 1.自编码器(keras+mnist)
- python2000个5除以84的余数_python中负数除法的求商和取余的问题
- 哈工大计算机报深圳还是本部,哈工大本部和哈工大深圳哪个比较好?
- python一行输出多个数据_python实现一行输入多个值和一行输出多个值的例子
- 机器学习中的numpy的array_机器学习阶段总结(numpy)
- 【CF1354C1C2】Polygon Embedding(求解包含正多边形的最小正方形)
- 腾讯云linux读取windows数据盘,腾讯云服务器Centos挂载数据盘的方法
- ocelot和nginx比较_庐山真面目之四微服务架构Consul和Ocelot简单版本实现