算法期末总结题

快排

思想:分治的核心就是找到一个问题,这个问题的子问题和这个问题本身要用一样的解法,但是问题的规模不一样。 快排的核心就是将数组分成左右子数组,怎么分呢? 找出一个pivot(一般是这一次排序的首元素)将以下逻辑写成一个方法partition,将小于等于pivot的数都放到左边,将大于等于pivot的数都放到右边,然后将pivot放到中间。 接着对左手数组重复这个过程,整体就有序了。 提问为什么会有序呢? 因为在一次排列的过程中pivot找到了自己的位置,经过有限次的再分,一定会让快排处理的对象只有一个元素,那这一个元素本身就是有序的,返回。那么整体就是有序的了。

代码:

时间复杂度分析:

最好,平均,o(nlogn)排序树 层数(logn)

最坏o(n^2) 因为最坏的树高是(n)

选第二大(选第k大)

参考快排的思想 mid就是当前找到的下标,如果当前下标不是就在左区间搜索(返回左区间的搜索值)反之搜索有区间。 第k大就是搜索的下标不同。

汉诺塔

思想:假设有A,B,C三个柱,src(起始柱),aux(辅助柱),dst(目标柱)。

如果有一个盘子,只需要从src移动到dst。 如果有2个那就将上面的一个放到aux,最后一个放到dst,接将aux的放到dst。

结合两个盘子的思想,我们只需要将A柱的前n-1盘子当做一个一个盘子。 那么整体就只有两个盘子。那么我们整体的逻辑就是:

如果只有1个盘子直接执行从src移动到dst

1.将n-1个盘子从src移动到aux,辅助柱是dst

2.将src最后的一个移动到dst

3.将n-1个盘子从aux移动到dst,通过src

背包问题

dp[i][j] 的值为:从0-i号物品任选,背包容量为j的情况下可获得的最大价值。

最长公共子序列(字符从1开始)

前几个,下标不就是i-1,j-1

最大子段和

dp[0] = nums[0] 然后从1开始遍历

相关推荐
x_yeyue2 小时前
三角形数
笔记·算法·数论·组合数学
Mr. zhihao3 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
念何架构之路3 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星3 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑3 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光4 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩4 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494734 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ6 小时前
单词拆分----dp
算法
智者知已应修善业6 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机