哈喽,我是404,正在努力提升代码能力的未来女程序员(笑),这是我的第一篇博客,接下来会记录我的学习之路到我力扣完全可以手撕,废话不多说,正文开搞!
通过初见力扣经典题目704.二分查找和59.螺旋矩阵,我注意到区间的使用对于题解非常重要,开与闭的划定是解题的关键,以下是一些重要点:
1.【】与【)的区别
首先贴上两幅图,借用一下代码随想录当中的图示:
【】的情况 【)的情况
可以看出,包括与不包括的区别在于边界值在何处,与此同时,对于区间缩小后值的位置也有影响,以下是对比:
【】时,若区间向左缩小,right = mid - 1 【)时,若区间向左缩小,right = mid
ps:其实一开始并不清除为什么right的值会有差别,读了代码随想录也有点迷糊,之后知道,这与区间有关。【】时,约束条件已经不满足,必须要再缩小一次;【)时约束条件仍然成立,所以可以为mid值。
2.循环不变量
在做螺旋矩阵时我不由得对前人的思路佩服至极,对于模拟一段过程,他们追求最简化,以此产生了循环不变量,做到简洁易懂。如图:
方块颜色即统一区间,循环不变量原则,对这道题的解决带来了极大的便利。
3.碎碎念
第一次刷题时不懂mid不可按一般思维直接加和,会导致溢出,迷糊了很久,后面看到移位运算也是想不到的操作,真妙啊。
感谢观看!不看也感谢我自己的知识产出!
标签:right,缩小,随想录,mid,二分法,重要性,初探,区间 From: https://www.cnblogs.com/Zxjblog/p/17233953.html