[学习报告]《LeetCode零基础指南》(第四讲) 数组

今天比前天的我更加了解了二分查找的运用,

1.搜索旋转排序数组

 

 while的条件通常写成(l<r),但是这里不行!可能存在特殊情况,当mid前面的数是有序的,就会找mid之前的数,如果恰好需要找的数在mid之后就找不到数组中存在的数。

mid=l+r+1>>1;是向上取整,防止数组中只有两个元素时就会使r(最左端的数)往右靠;使得r=l

最后返回-1值。这题不只有这两个小细节,还有一个很难想到的一点。怎么判断边界l或r的移动(也就是check(x)),是根据旋转一次之后判断mid之前是否有序否则找无序的那一边。


 2.搜索旋转排序数组

 错误

 

 和上一题思路差不多,但是数组的元素不是互不相同的,可能出现右图的情况。这里只需判断大端、小端和mid是否相同,相同就缩小查找的范围。


3.寻找旋转排序数组中的最小值

 

 这里可以把mid看成数组中最小的数,套用二分查找就可以了。

4.爬楼梯

 

我这里还有一种算法,但是超时了。


 

 5.斐波那契数

 


 6.第 N 个泰波那契数

 


7.差的绝对值为 K 的数对数目 

 


8.猜数字 


9. 拿硬币

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值