力扣周赛题解
文章平均质量分 82
力扣周赛题解
wjwwjw04
这个作者很懒,什么都没留下…
展开
-
力扣周赛406题解
为了让交换后的数最大要尽可能交换位置靠左的数,设这个数为下标为 i ,与它交换的数 j 应该是 i 右面最大的数,并且这个数要比 i 大。上面的代码内层循环要多次寻找 i 之后的最大值,我们可以提前算出每个区间的最大值来省掉内层循环,代码如下,时间复杂度O( 2 * log n)综上 i 向右枚举,j 向左枚举即可得到下面的代码,时间复杂度为O(log^2 n),log n为这个数的长度。上面的代码节省了时间却消耗了额外的空间,其实可以边枚举 i 边更新 maxindex 来省去记录最大值的数组。原创 2024-07-18 22:34:53 · 317 阅读 · 1 评论 -
力扣周赛407题解
nums = [3,5,1,2], target = [4,6,2,4] 的差分数组是 [1,0,0,1],由于差分数组的性质,前面有+1,后面就要有-1,差分数组是要比原数组多一个位置的,所以+1 和 -1的数量可能对不上。另一种方法就是补出差分数组的多余的位置,nums = [3,5,1,2], target = [4,6,2,4] 的差分数组是 [1,0,0,1,-2]。假设我们进行的+1操作为n,为后面贡献的-1个数也为n,-1操作为m,为后面贡献的+1个数也为m。n为0,小红无法操作,小明胜。原创 2024-07-27 22:09:16 · 359 阅读 · 0 评论