![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
循环
文章平均质量分 65
CheeseCheese-IScream
这个作者很懒,什么都没留下…
展开
-
边界控制_二分查找+设计测试用例+隐藏10年的bug【学习笔记】
边界控制 例:二分查找 普通查找: 从第一个开始,一个一个看 二分查找: 从中间开始看(效率高) 二分查找的必要条件: Arr是一个有序数组 精确描述: /** * Searches element k in a sorted array. * * @param arr * a sorted array * @param k * the element to search * @return index in arr wher原创 2021-04-17 22:29:23 · 639 阅读 · 5 评论 -
【封神操作】循环控制_例题链表删除结点【学习笔记】
例二:链表中delete_ if 要求: 把所有数值为2的结点删除掉 循环从什么角度入手? 定义【循环不变式】 假设第一个2已经被删掉了 怎么处理第2个2 思路: Java:把3的next指向5,垃圾回收把结点2回收掉 C++:还需要delete结点2 具体怎么做? 有一个变量指向结点3 把3指向5 不用管2 删完2,下一个要考虑结点5, 此时previous指向3 完成【循环不变式】向前推进的过程 【循环不变式】: 从链表开头到previous结点为止,保证所有值为2的结点都已经被正确原创 2021-04-17 20:29:09 · 549 阅读 · 2 评论 -
循环控制_例题链表反转非递归【学习笔记】
例一:链表反转 前言: 如果链表有100万个元素,资源开销并不大,把它反转也不是见特别复杂的事, 但是用“递归”就会调100万次,系统开销非常大, 所以要用循环的方法做出链表的反转。 用循环的方法做“链表反转”的步骤: ①定义循环不变式 说一句断言,让它在整个循环中始终成立 之前的“递归”做法: 把第一个元素单独拿出来,把2345进行递归 “循环”做法: 在中间切一刀: 前三个结点反转完: 3和4的连接线属于结点3的部分: 切之前,3的next指向4 切之后,3的next指向2原创 2021-04-17 18:01:49 · 184 阅读 · 0 评论 -
编码技巧_循环书写方法【学习笔记】
循环控制 循环和递归一样,都需要有一个断言。 递归中的断言: 1. 函数定义本身有返回值,参数,side-effect 2. 断言函数能够正确工作: 假设【N-1】的情况能够正确工作,能够推出【N】的情况也能够正确工作。 循环中的断言: 定义: 看循环框架: 1.定义了2个参数a,b 2.有个while循环 3.循环体 怎么保证循环的正确性? 要有一个循环不变式,要说一句话: 【定义条件】 条件在什么时候要满足呢? 进入第一次循环之前:a,b必须满足这个条件 每一次循环结束之前:a,b原创 2021-04-17 16:15:37 · 187 阅读 · 0 评论