LCR 188. 买卖芯片的最佳时机
数组 prices 记录了某芯片近期的交易价格,其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片,并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。
如果你不能获取任何利润,返回 0。
示例 1:
**输入:**prices = [3, 6, 2, 9, 8, 5]
**输出:**7
**解释:**在第 3 天(芯片价格 = 2)买入,在第 4 天(芯片价格 = 9)卖出,最大利润 = 9 - 2 = 7。
示例 2:
**输入:**prices = [8, 12, 15, 7, 3, 10]
**输出:**7
**解释:**在第 5 天(芯片价格 = 3)买入,在第 6 天(芯片价格 = 10)卖出,最大利润 = 10 - 3 = 7。
提示:
0 <= prices.length <= 10^5
0 <= prices[i] <= 10^4
买入的天数为buy,卖出的天数为sell,一定有sell>buy
找到最大的price[sell]-prive[buy]
pri ...
LCR 187. 破冰游戏
社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数。请返回游戏结束时最后一位成员的编号。
示例 1:
**输入:**num = 7, target = 4
**输出:**1
示例 2:
**输入:**num = 12, target = 5
**输出:**0
提示:
1 <= num <= 10^5
1 <= target <= 10^6
可以用循环链表来模拟
在最后一定是一个结点,索引为0
倒推回去,先把循环展开,倒数第二轮是两个结点,索引为target,此时考虑循环索引就是target%2
倒数第三轮三个结点,索引为(target+第二轮索引)%3
同理 ans = (ans + target) % i
123456789class Solution { public : int iceBreakingGame(int num, int target) { ...
LCR 186. 文物朝代判断
展览馆展出来自 13 个朝代的文物,每排展柜展出 5 个文物。某排文物的摆放情况记录于数组 places,其中 places[i] 表示处于第 i 位文物的所属朝代编号。其中,编号为 0 的朝代表示未知朝代。请判断并返回这排文物的所属朝代编号是否能够视为连续的五个朝代(如遇未知朝代可算作连续情况)。
示例 1:
**输入:**places = [0, 6, 9, 0, 7]
**输出:**True
示例 2:
**输入:**places = [7, 8, 9, 10, 11]
**输出:**True
提示:
places.length = 5
0 <= places[i] <= 13
连续五个数,很容易想到 max-min=4 ,0是万能牌,每多一个0条件就会更宽松
所以如果没有重复的数max-min只需要小于5就行,即对于0只要排除就行,题目没有说朝代不重复,所以如果有重复朝代需要直接返回false。
1234567891011121314151617181920class Solution {public: bool checkDynasty(vecto ...
LCR 185. 统计结果概率
你选择掷出 num 个色子,请返回所有点数总和的概率。
你需要用一个浮点数数组返回答案,其中第 i 个元素代表,这 num 个骰子所能掷出的点数集合中第 i 小的那个的概率。
示例 1:
**输入:**num = 3
输出:[0.00463,0.01389,0.02778,0.04630,0.06944,0.09722,0.11574,0.12500,0.12500,0.11574,0.09722,0.06944,0.04630,0.02778,0.01389,0.00463]
示例 2:
**输入:**num = 5
输出:[0.00013,0.00064,0.00193,0.00450,0.00900,0.01620,0.02636,0.03922,0.05401,0.06944,0.08372,0.09452,0.10031,0.10031,0.09452,0.08372,0.06944,0.05401,0.03922,0.02636,0.01620,0.00900,0.00450,0.00193,0.00064,0.00013]
提示:
1 <= num <= 11 ...
LCR 184. 设计自助结算系统
请设计一个自助结账系统,该系统需要通过一个队列来模拟顾客通过购物车的结算过程,需要实现的功能有:
get_max():获取结算商品中的最高价格,如果队列为空,则返回 -1
add(value):将价格为 value 的商品加入待结算商品队列的尾部
remove():移除第一个待结算的商品价格,如果队列为空,则返回 -1
注意,为保证该系统运转高效性,以上函数的均摊时间复杂度均为 O(1)
示例 1:
输入:
[“Checkout”,“add”,“add”,“get_max”,“remove”,“get_max”]
[[],[4],[7],[],[],[]]
输出: [null,null,null,7,4,7]
示例 2:
输入:
[“Checkout”,“remove”,“get_max”]
[[],[],[]]
输出: [null,-1,-1]
提示:
1 <= get_max, add, remove 的总操作数 <= 10000
1 <= value <= 10^5
与之前单调栈类似,先入队还小的元素可以被挤出
但是先入队的大元素也会先出队,所以我们必须记 ...
LCR 183. 望远镜中最高的海拔
科技馆内有一台虚拟观景望远镜,它可以用来观测特定纬度地区的地形情况。该纬度的海拔数据记于数组 heights ,其中 heights[i] 表示对应位置的海拔高度。请找出并返回望远镜视野范围 limit 内,可以观测到的最高海拔值。
示例 1:
**输入:**heights = [14,2,27,-5,28,13,39], limit = 3
输出:[27,27,28,28,39]
解释:
滑动窗口的位置 最大值
--------------- -----
[14 2 27] -5 28 13 39 27
14 [2 27 -5] 28 13 39 27
14 2 [27 -5 28] 13 39 28
14 2 27 [-5 28 13] 39 28
14 2 27 -5 [28 13 39] 39
提示:
你可以假设输入总是有效的,在输入数组不为空的情况下:
1 <= limit <= heights.length
-10000 <= heights[i] <= 10000
此题目的是寻找每个limit中的最大值,想到可以使用优先队列维护每一个limit中最 ...






