解题报告(3)数组

本文介绍了如何使用二分查找算法在旋转数组中定位元素,并结合动态规划解决重复元素和特定边界条件问题。通过实例演示了斐波那契数列和递推公式求解。涵盖了算法核心技巧和扩展思考。

第一种:for循环遍历

第二种:

 

 

利用二分查找思想

步骤

(1):定义左边界,右边界,中点mid

(2):由于数组经过旋转,被分为两个有序序列,而以mid为界,其左右必有一个有序序列

所以先以(nums【0】<mid)为判断条件,判断哪个是有序序列

(3):判断target是否在有序序列中

附二分查找模板

 第二题:数组仍升序,但可能存在相同数字

 添加特殊情况左界和右界和中点都相等

即将左右边界都+1(一定不是target)

第三题

 

直接ctrl+v复制过来的。。

虽然与二分查找相类似,但有点不同

考虑旋转后数组最后元素x,最小值左边元素必大于x,最小值右边元素必小于x,(因为最小值一定是翻转后的第一个数)

X可类推至high(第一次的high就是x,第二次时high要么仍然是X,要么high到X已经被抛弃)

所以当num[mid]<num[high]时,说明mid在最小值右边,所以抛弃mid到high的一段,即high=pivot

第四五题 斐波那契数列

 第六题

 第二种方法:动态规划  即循环数组

需考虑动态转移方程:T(n+3)=...

边界条件:T0 T1 T2

构造循环数组

 

 i=3时赋值,循环1次

循环赋值,最后输出s

小结:学了二分查找和动态规划(也可以说是从答案上看了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值