天池每周周赛 第1场题解

简介: 在线编程限时内测赛第1场题目解析。

商品列表

算法:模拟

思路

依次计算L1、L2显示的商品区间。

复杂度

时间复杂度O(1),空间复杂度O(1)。
image.png
image.png
image.png

最大乘积

算法:思维

算法思路

无序数组中取三个数字的最大乘积,结果由两种情况构成:最大的三个数相乘或者最小的两个数相乘 (负数)再乘上最大数。
然后我们通过设五个变量代表上述五个数
遍历数组,通过ifelse判断五个变量和num的大小,不断更新上述五个变量
最后取两个情况的较大者即是答案

复杂度分析

  • 时间复杂度为O(n)

    • n为数组长度
  • 空间复杂度为O(1)

    • 常量级的空间消耗

image.png
image.png
image.png

会议室

算法:动态规划

算法思路

考虑到数据范围的时间戳 meetingi≤50000 ,我们可以以时间轴为核心建立动态规划。我们可以考虑 dpi 为到 i 时刻为止的最大价值。
我们可以先预处理一下每个时间点结束的会议有哪些。然后从对应的开始点进行状态转移。
状态转移方程为
dp[i]=max(dp[i-1], dp[startTime]+val)
image.png
image.png
image.png

幸运数

算法:dfs+思维

算法思路

由于 1≤l≤r≤10⁹ ,所以其实这个数字最多只有9位(10⁹不是幸运数)。我们仔细观察幸运数的定 义,由于其条件比较苛刻,所以其实幸运数数量不会很多,初步估计就在 6^8 以内(实际更少)。因此我们可以尝试生成出来所有的幸运数,然后判断范围。
生成的方法很简单,从 7 开始,进行扩展,变成 18, 81, 29, 92, 70等。这样一层层的拓展下去,得到所有的幸运数。
image.png
image.png
image.png
image.png
image.png

相关文章
|
6月前
Leetcode第123场双周赛
在LeetCode的第123场双周赛中,参赛者需解决三个问题。第一题涉及根据给定数组构建三角形并判断其类型,如等边、等腰或不等边,代码实现通过排序简化条件判断。第二题要求找出满足差值为k的好子数组的最大和,解决方案利用前缀和与哈希表提高效率。第三题则需要计算点集中满足特定条件的点对数量,解题策略是对点按坐标排序并检查点对是否满足要求。
26 1
【Leetcode】- 第 29 场双周赛
【Leetcode】- 第 29 场双周赛
|
存储 数据安全/隐私保护
|
并行计算 Java 调度
leetcode第84场双周赛
维护一个unordered_map mp,mp[x]表示类型x的任务最近一次的结束时间。按顺序枚举所有任务,设当前任务类型为。从倒数第二个数开始往前考虑。,执行当前任务之前已经经过了。是有序的,直接把遍历。的结果作为答案即可。把等式两边移项,变为。
92 0
leetcode第84场双周赛
|
机器人
LeetCode第 86 场双周赛
LeetCode第 86 场双周赛
LeetCode第 86 场双周赛