【算法学习】中级班五

在这里插入图片描述
解:维护两个栈即可,第二个栈中记录第一个栈中对应位置的最小值
在这里插入图片描述
2.
在这里插入图片描述

  • 队列——》栈:
    准备两个队列,每次往一个队列里添加,但如果需要返回数据,则把前面的n-1个数据放到第二个队列,返回剩下的第n个
  • 栈——》队列:
    在这里插入图片描述
    代码:
    在这里插入图片描述
    在这里插入图片描述
  • 补充:宽度优先用队列,深度用栈。如果面试让用栈完成宽度,队列完成深度,则是指这个题目
  • 动态规划空间压缩:打表法时如果不需要全局表格,只需要某一行,可以只使用一行,不断更新这行。
  • 当行特别长时,可以只使用一列不断更新
  • 不能压缩的情况:每个格子依赖的格子太远了

在这里插入图片描述
是指容器的上方可以接水
在这里插入图片描述
i位置上的最大接水量等于它两边最大值中的最小值与i位置高度差
使用双指针依次遍历头和尾
在这里插入图片描述
5.
在这里插入图片描述
在这里插入图片描述
当全局的max在左边时,右边最大值一定>=arr[N-1],那么max|max左-max右|是划分在arr[N-1]处;max在右边时同理
6. 咖啡杯问题:arr代表冲咖啡的几台机器分别需要的时间,N代表喝咖啡的人数,a和b分别代表洗咖啡杯的时间和自然挥发干净的时间(要么一个个洗干净,要么自然变干净,前者只能串行后者可以并行)。那么全部流程完成最少需要多少时间
在这里插入图片描述

  • 泡咖啡时间最短
    设计一个小根堆,里面的每一个元素是一个二维的:(咖啡机空闲时间,咖啡机泡咖啡的时间),按照二维数字和组织小根堆。
    初始:
    在这里插入图片描述
    第一个人选择时弹出(0,2),放回(2,2),变成:
    在这里插入图片描述
    N个人依次这样操作。
    小根堆比较函数:
    在这里插入图片描述
    在这里插入图片描述

  • 洗咖啡时间最短
    drinks[]表示每个人喝完咖啡可以开始洗的时刻
    p1表示如果当前杯子用咖啡机洗,完成所有杯子清洗所需的时间;
    p2表示如果当前被子直接晾干,完成所有杯子清洗所需的时间
    在这里插入图片描述

在这里插入图片描述
数组中的数分类:
奇数a个;2的倍数但不是4的倍数b个;4的倍数c个
(1)b == 0
奇4奇4奇4…,奇数旁边必须有4
a == 1,c>=1;
a>1,c>=(a-1)
(2)b!=0
必须每个2附近放2,最后一个2因子下面必须放4
2222224奇4奇4奇4…
a == 0,c>=0;
a == 1,c>=1;
a>1,c>=a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值