算法——第四周习题集合

这篇博客主要解析了算法习题,包括汉诺塔、峰顶问题、矩阵的最长含1行等,涉及多种算法,如分治法、二分查找、动态规划等。通过这些习题,读者可以掌握在不同场景下如何应用算法解决问题。
摘要由CSDN通过智能技术生成

习题:
使用的算法归纳:
算法一:Select算法,在无序数组中找第k大数字,时间复杂度O(n)
[如果是最大,最小,第二大,采用比较算法]
算法二:若有两个毫无关系的数组进行关系匹配,考虑小的排序,大的进行二分查找
如题目八,题目十
算法三:取数组的中间值,将关系数组化为两部分,形成分治
如题目十,题目十一,题目十二,题目十五
算法四:中位数距离其他数字距离和最小

补充:伪代码的书写规范
在这里插入图片描述
1:其中注意if (----)then-----中判断语句可以使用(=,》=,《=)
2:多重嵌套的话利用 if----then------
          elseif-----then-----
          else----
注意对齐代表范围,类似于Python
格式问题:
1:方法名字,输入,输出
2:左列标号
3:ifthenelse. whiledoen goto <-(变量直接写而不用申请)
4:递归方法或者调用过程
5:描述性语言。对于难以用符号表达的语句,用描述性语言表达

在这里插入图片描述

题目一:汉诺塔问题

在这里插入图片描述
解析:答案说的很清楚了。注意将A到C移动两个盘子表示为BiMove(A,C)说明对于某个过程或者动作直接用函数代替就好。
另外要注意T(1)=2 表示的是当只有两个盘子时需要移动两次
在这里插入图片描述

题目二:峰顶问题

在这里插入图片描述
解析:类似于leetcode中的旋转数组的最小值问题,关键在于在奇异点
对于K。
若L(K-1)<L(K)&&L(K)>L(K+1) 则return K
若L(K-1)<L(K)<L(K+1)说明在左斜坡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值