随笔分类 -  LeetCode

摘要:康托展开 一开始无脑枚举全排列, 果断超时, 还是得看看如果降低计算量。 题目destination = [2,3], 相当于2个V, 3个H, 输出全排列去重后的对应位置字典序列内容。 忽略去重 则问题为全排列, 所有可能为: $$ (\sum destination)! = (2+3)! = 5 阅读全文
posted @ 2023-04-25 22:15 Simon_X 阅读(59) 评论(0) 推荐(0)
摘要:贪心 + 二分 一开始没啥好思路, 先从模拟的角度思考。 假设有一条基准线l不断从0往上推, 遇到的任务最小起始时间不得低于基准线l <= start。直到start无法移动,则分配时间执行任务。 [1,3,2] [2,3,2] [2,5,3] -> [2,5,3] -> [4,5,1] -> [5 阅读全文
posted @ 2021-12-18 22:47 Simon_X 阅读(179) 评论(0) 推荐(0)
摘要:LeetCode 1775. 通过最少操作次数使数组的和相等 由于只出现正整数[1, 6], 辣么明显先用计数排序处理, 得到数组和的表达式 \[ sum_1 = \begin{bmatrix} a_0 \\ a_1 \\ a_2 \\ a_3 \\ a_4 \\ a_5 \end{bmatrix} 阅读全文
posted @ 2021-11-12 23:40 Simon_X 阅读(114) 评论(0) 推荐(0)
摘要:LCP 29. 乐团站位 绕远路 为了我自己看起来舒服, 以下x``y坐标的定义与题目相反 彩笔如我, 看着题目题目描述需要环绕排序, 结果一不注意调起了自动脑补, 瞬间拆成分情况讨论... 然鹅这并不优雅, 姑且先记下来嘲笑过去的自己 为了坐标算起来方便, 位置起点为0, 每轮i拆解一次外层(半圈 阅读全文
posted @ 2021-10-31 00:15 Simon_X 阅读(100) 评论(0) 推荐(0)
摘要:LeetCode 1191 K 次串联后最大子数组之和 贪心 为了方便说明, 定义几个变量。对每个数组arr而言: maxSub: 最大子数组之和 maxSuf: 最大后缀数组之和 maxPre: 最大前缀数组之和 \[ opt = \begin{cases} maxSub &k=1 \\ max( 阅读全文
posted @ 2021-08-21 15:09 Simon_X 阅读(72) 评论(0) 推荐(0)
摘要:LeetCode 668 乘法表中第k小的数 一开始拍脑袋想先沿着乘法表对角线搜索, 然后发觉元素大小并不是均匀分布, v=x*y若对x或y分别搜索则无法控制单一变量 因此直接对v进行二分搜索, 然后以下为拍脑袋证明搜索结果v必定属于乘法表中的元素 设cnt(x)表示乘法表搜索区域中<=x的元素个数 阅读全文
posted @ 2021-08-08 00:16 Simon_X 阅读(78) 评论(0) 推荐(0)
摘要:LeetCode 825 适龄的朋友 看完条件一晃眼...好像叫德摩根定律? (似乎是离散数学里的) 反正展开就对了 为了表达方便修改了运算符 !( b<=0.5*a+7 || b>a || (b>100 && a<100)) = !(b<=0.5*a+7) && !(b>a) || !(b>100 阅读全文
posted @ 2021-03-31 01:11 Simon_X 阅读(99) 评论(0) 推荐(0)
摘要:原本我想使用无限叠if-else的方式估计能解决, 但这样总归是不够优雅。 使用点斜式在斜率上可能存在问题, 为了少写判断, 使用一般式描述直线。并且将坐标带入一般式就能直观判断点与直线的位置关系, 以此判断线段的位置关系 完成关系判断后, 剩下的事就相当于求直线交点, 直接解方程又得判断条件, 不 阅读全文
posted @ 2020-11-11 23:35 Simon_X 阅读(128) 评论(0) 推荐(0)
摘要:LeetCode 1305 两棵二叉搜索树中的所有元素 如果想偷懒, sort一波流 稳扎稳打, 归并+中序 再稍微优化一点点, 遍历时直接进行归并 最后偷一个输入加速, +0.1MB内存, -68ms用时 双100%达成 C艹 /** * Definition for a binary tree 阅读全文
posted @ 2020-09-09 01:22 Simon_X 阅读(172) 评论(0) 推荐(0)
摘要:1040 移动石子直到连续 II 模...本来想归类到模拟的, 看了看下面的标签还是放到滑动窗口好了 最大移动次数 选择一边的端点石子, 每次都移动到与原位置尽可能近的位置 除了首次选择的起点, 剩余空位置的总会被填充一次石子 由此可以得到最大值的公式, 用间距之和减去首尾较短的那段间距 maxNu 阅读全文
posted @ 2020-09-06 22:48 Simon_X 阅读(260) 评论(0) 推荐(0)
摘要:动态规划 先去重, 再考虑状态转移 对于每个位置字符分别有两种状态, 独立打印或一同打印, 再考虑到打印次数, 一维的$dp(i)$不够描述状态 再加一维, 每次连续打印时只考虑某2个字符属于同一个打印批次, 列出状态转移方程 \[ dp(st, ed) = \begin{cases} 1 + dp 阅读全文
posted @ 2020-06-10 01:08 Simon_X 阅读(149) 评论(0) 推荐(0)
摘要:LeetCode 334 递增的三元子序列 在最长升序子序列问题中, 设序列长度为n, 最长升序子序列长度为m 优化前的时间复杂度: $O(n m)$ 优化后的时间复杂度: $O(n\log{m})$ 空间复杂度: $O(m)$ 当 时, 为常数 此时, 时间复杂度:$O(n)$, 空间复杂度:$O 阅读全文
posted @ 2020-01-19 00:27 Simon_X 阅读(130) 评论(0) 推荐(0)
摘要:LeetCode 137 只出现一次的数字 II 虽然要求不开辟额外空间与O(n)的时间复杂度, 单由于数据比较水. 靠排序依然能过, 所以花了点时间想了想 数字去重, 时间复杂度O(n)且不开辟额外空间, 那么就该从位运算入手了 某个元素只出现一次, 其余每个元素出现3个, 则把每一个数字拆分为二 阅读全文
posted @ 2019-08-26 23:07 Simon_X 阅读(364) 评论(0) 推荐(0)