算法系列课程第一套-03-数组

引言:天平与假币

在这里插入图片描述
在这里插入图片描述

1.天平平衡

在这里插入图片描述

2.左A比右B重

在这里插入图片描述

理论下界

在这里插入图片描述
在这里插入图片描述

求局部最大值

在这里插入图片描述

问题分析

在这里插入图片描述

算法描述

在这里插入图片描述

Code

在这里插入图片描述

第一个缺少的整数

在这里插入图片描述

循环不变式

在这里插入图片描述

利用循环不变式设计算法

在这里插入图片描述

合并相同的分支

在这里插入图片描述

Code

举例

  • 开始数组:a=[3 5 1 2 -3 7 4 8]
    首先1<a[1]=3<8    交换a[1],a[3]          》》[1 5 3 2 -3 7 4 8]
  • 第二次while:a[1]=1 ,i++
  • 第三次:2<a[2]=5<8    交换a[2],a[5]    》》[1 -3 3 2 5 7 4 8]
  • 第四次:a[2]=-3<2    交换a[2],a[8]       》》[1 8 3 2 5 7 4 -3]
                  并且数组长度减1                    》》[1 8 3 2 5 7 4]
  • 第五次:a[2]=8>7 交换a[2],a[7]           》》[1 4 3 2 5 7 8]
                  并且数组长度减1                    》》[1 4 3 2 5 7]
  • 第六次:2<a[2]=4<8    交换a[2],a[4]     》》[1 2 3 4 5 7]
    后面就是i++,直到i>size,输出i=6,也即是最终答案。

查找旋转数组的最小值

在这里插入图片描述

分析

在这里插入图片描述
在这里插入图片描述

Code

在这里插入图片描述

零子数组

算法流程

在这里插入图片描述

Code

在这里插入图片描述

举例

  • 开始数组:1 -2 3 10 -4 7 2 -5
  • 前n项和: 1 -1 2 12 8 15 17 12
  • 排序后      -1 0 1 2 8 12 12 15 17
  • 对排序后数组后项减前项:1 1 1 6 4 0 3 2
  • 最小值是0 ,找到相减为0的两个前n项和,剔除两个序列的交集部分,就得到了最终结果
  • 结果 -4 7 2 -5

两个序列之间的和差表示这两个序列的差集的和

最大子数组和

在这里插入图片描述

分析

在这里插入图片描述

举例

  • 开始数组:1 -2 3 10 -4 7 2 -5
  • 前n项和: 0 1 -1 2 12 8 15 17 12 (定义a[-1]=0)
  • 找到以第x位结尾的子序列的最大值
  • 以10结尾的序列 1 -2 3 10 中最大序列 3 10

进一步分析

在这里插入图片描述

动态规划Code

在这里插入图片描述

思考

在这里插入图片描述

参考代码

在这里插入图片描述

最大间隔

在这里插入图片描述

问题分析

在这里插入图片描述

解决思路

在这里插入图片描述
在这里插入图片描述

Code

在这里插入图片描述

字符串的全排列

在这里插入图片描述

递归算法

在这里插入图片描述

递归Code

在这里插入图片描述

如果字符有重复

在这里插入图片描述

Code

在这里插入图片描述
在这里插入图片描述

空间换时间

在这里插入图片描述
在这里插入图片描述

全排列的非递归算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Code

在这里插入图片描述

几点说明

在这里插入图片描述
权限&免责&交流声明

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值