商品列表
算法:模拟
思路
依次计算L1、L2显示的商品区间。
复杂度
时间复杂度O(1),空间复杂度O(1)。
最大乘积
算法:思维
算法思路
无序数组中取三个数字的最大乘积,结果由两种情况构成:最大的三个数相乘或者最小的两个数相乘 (负数)再乘上最大数。
然后我们通过设五个变量代表上述五个数
遍历数组,通过ifelse判断五个变量和num的大小,不断更新上述五个变量
最后取两个情况的较大者即是答案
复杂度分析
-
时间复杂度为O(n)
- n为数组长度
-
空间复杂度为O(1)
- 常量级的空间消耗
会议室
算法:动态规划
算法思路
考虑到数据范围的时间戳 meetingi≤50000 ,我们可以以时间轴为核心建立动态规划。我们可以考虑 dpi 为到 i 时刻为止的最大价值。
我们可以先预处理一下每个时间点结束的会议有哪些。然后从对应的开始点进行状态转移。
状态转移方程为
dp[i]=max(dp[i-1], dp[startTime]+val)
幸运数
算法:dfs+思维
算法思路
由于 1≤l≤r≤10⁹ ,所以其实这个数字最多只有9位(10⁹不是幸运数)。我们仔细观察幸运数的定 义,由于其条件比较苛刻,所以其实幸运数数量不会很多,初步估计就在 6^8 以内(实际更少)。因此我们可以尝试生成出来所有的幸运数,然后判断范围。
生成的方法很简单,从 7 开始,进行扩展,变成 18, 81, 29, 92, 70等。这样一层层的拓展下去,得到所有的幸运数。