一起刷算法 # 二分 # 03 - 06
2021/12/31 14:37:06
本文主要是介绍一起刷算法 # 二分 # 03 - 06,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二分法小总结
最近刷了许多的二分算法题,从简单到困难,有一些心得体会,做个记录以便以后复习。
首先一个感悟就是,二分法究竟在干嘛,它的算法核心是什么?
是while循环么?
是二分概念么?
那二分的概念又是在干嘛呢?
第一点:二分在干嘛
其实,个人觉得,二分的核心在于决定抛弃哪一部分的数据以达到decrease and conquer的目的。而如何去做这个抛弃的决定,就要看数据本身的特点。
例如,标准二分,给的数据就是有序序列,那么你就要将nums[mid]和target比较,然后决定抛弃前面还是后面。
当给定的数据变了,例如经典的旋转数组,即把有序数组割开,然后拼接,例如 1 2 3 4 5 6,从 2 隔开变成 3 4 5 6 1 2
这样的数据的结构,用二分思想的时候,怎么去决定抛弃哪一部分呢?这个时候就需要根据数据本身去确定,这里就要分几种情况去讨论。
第二点:敏锐的察觉二分的概念
当我们看到有序数组查找的时候,就很容易想到二分!咱们用二分!但有时候二分会嵌入到某些问题中,比如前缀和中的查找,前缀全是正整数的话,那么前缀和一定是递增的,递增即有序,有序中的查找你就会想到二分。
所以二分熟练应用应该是内化为自己的思想的,应该存在于自己解决问题的方法路径当中。
当我们去刷这些算法的时候,我想更多的不是去记住每一个问题对应的代码,而是养成一个解决问题的思维,运用各种数据结构和基本的算法思路去解决复杂的问题,数据结构和算法应该是画笔,而不是画好的画。
这篇关于一起刷算法 # 二分 # 03 - 06的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用