中级班3

题目1:leetcode 517

 

 思路:业务题 分析情况

现在假设在i点位置,有一下情况: 每次扔 只能扔一个,接受 可以从两边一起接受

1)  左边衣服多与需求衣服,右边衣服数量多于需求衣服:至少需要{左边数量,和右边数量} 最大值

2) 左边多,右边少:至少需要{左边数量,和右边数量} 最大值

3)左边少,右边多:至少需要{左边数量,和右边数量} 最大值

4)左右都少, 扔的次数 = 左右两边次数+一起 

 

 

题目2:

思路:宏观的写个函数打印一个斜线的数据 

 

 

 

 

 

 题目3:

 

思路: 实现一个函数 打印 左上角和右下角所在的行和列, 每次更新左上角和右下角的位置即可

 

 

不同情况:左上角和右下角 在同一行,或者在同一列,或者 普通情况

 

 

 题目4:

 

 

思路:同样是函数,只不过交换某些点 ,要分组

 

 

 

coding:

 

 题目5:650

 

 

思路: 把N分解为指数因子,指数  只能调用2操作 ,所以 当时指数时,为N-1此操作

 

题目6:

 

思路: 用堆,

用map创建词频表,根据map创建大根堆 

 

 

题目7:57?

创建一个结构,这个结构可以接受字符串,并且实现一个方法:打印频率最高的前N个字符串

思路:手写 堆;; 进来数据看有没有在堆上 ,没有看堆满没满,没满就去,否则看数量 ,数量小于堆的小根堆则 不进去,但是在堆位置map标志位-1,

每进来一个词频都要现在词频表等级更新数量,

 

 

 

 

coding

 

 

 

 第四课:

 

 思路:创建两个栈 一个是数据栈一个是辅助栈,每当进来个元素都要添加到数据栈,然后比较元素的大小和辅助栈的大小谁小压谁

 

 

 题目2

 

 用两个栈实现队列:

两个栈 ···

队列实现栈:

两个队列:正常入队列当要返回数据时把她前面的数据都加入另个队列 弹出最后一个

 

 

 

 

 当 某个位置只依赖上面和左面时  可以用压缩技巧 轮着 更新 一个数组

 

 思路:只观察自己上面的格子,记住自己左侧的最大值和自己 右侧的最大值 谁小 用谁-当前的值,得到的差就是当前值能够装的最大值水  ,, 双指针遍历 到结束

 

 

 题目:

 

 思路: 题目的意思是 左右两个最大值相减, 解题流程是遍历数组求最大值,这个最大值有两种可能 一种是倍划分左边一种是被划分右边,

划分左边时: 最大值 减去最后一个数

划分右边时:最大值减去第一个数

 

 思路: 生成a+a 大字符串 判断b是不是大字符串的字串

 

题目:

咖啡杯问题:

  给一个数组,arr=[3,2,1] 表示 第一个咖啡机时间时3,第二个咖啡机时间是2...,每个咖啡机每次只能冲一杯咖啡

现在有N个人要咖啡,每人只喝一杯,人喝咖啡时要先去该咖啡机前如果有人则等待,没人则喝咖啡,并且只有一台洗咖啡杯子的机器,且该机器洗完一个杯子要花上a的时间,

咖啡杯不洗,自然挥发也能变干净的时间b

问从第一杯开始到所有咖啡杯都干净 的最短时间

小根堆:得到咖啡的时间 也是从这个时间要去洗的时间,(3,3,)表示 从3时刻可以做咖啡,然后做一杯咖啡需要的时间 排队的序是 3+3

 

 洗咖啡时的:

 

 

 

题目:

 

posted on 2022-04-09 12:12  _Zhangg  阅读(52)  评论(0)    收藏  举报

导航