LeetCode | 周赛-372 做题记录
| 2023-11-21
0  |  阅读时长 0 分钟
日期
Nov 21, 2023
Tags
LeetCode
笔记

第 372场周赛-链接

AC情况:

✅ ✅ ❌ ❌

1. 使三个字符串相等

给你三个字符串 s1s2 和 s3。 你可以根据需要对这三个字符串执行以下操作 任意次数 。
在每次操作中,你可以选择其中一个长度至少为 2 的字符串 并删除其 最右位置上 的字符。
如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的 最小 操作次数;否则,返回 -1

解题思路:

根据题意,当进行任意操作使得三个字符串相等时,每个字符串左侧保持不变,因此,可以将题意转化为获取三个字符串从下标0开始的最长公共子序列长度。
复杂度:

AC代码:

2. 区分黑球与白球

桌子上有 n 个球,每个球的颜色不是黑色,就是白色。
给你一个长度为 n 、下标从 0 开始的二进制字符串 s,其中 1 和 0 分别代表黑色和白色的球。
在每一步中,你可以选择两个相邻的球并交换它们。
返回「将所有黑色球都移到右侧,所有白色球都移到左侧所需的 最小步数」。

解题思路:

根据题意分析,从右往左,依次将某一个黑色球都移到右侧时,考虑的最小移动步数其实等于右侧的白球数量。
以case:1000101为例
s[1]已经在序列最右侧,不需要移动
s[4]左侧s[5]为0,因此交换s[4]s[5]s=1000011
s[0]左侧s[1]s[2]s[3]s[4]为0,因此需要依次交换4次右移黑球,s=0000111
最小步数为5
计算时只需要逆序遍历,即可统计出每个黑色球右侧的白球数量,求出最小步数
复杂度:

AC代码:

3. 最大异或乘积

给你三个整数 a ,b 和 n ,请你返回 (a XOR x) * (b XOR x) 的 最大值 且 x 需要满足 0 <= x < 2^n
由于答案可能会很大,返回它对 109 + 7 取余 后的结果。
注意XOR 是按位异或操作。

解题思路:

比赛的时候思路大致正确,但是没有注意到a、b的范围会大于x
(a XOR x)(b XOR x) 为AB
首先采用位运算的方法,将整数a,b转化为二进制数。求成绩最大值,根据异或操作的原理,我们可以很轻易地得出假设:
  • a[i] = b[i]时,若要AB 最大,肯定希望A[i]=1,这是的x[i]可以直接确定下来
  • a[i] ≠ b[i]时,A[i]B[i],必有一一个为1,一个为0,把这些位数表示的数值相加得到的数记为R,不管怎么分配R的和是不会变的。
已知当两数之和固定,乘积最大,本题的问题也就转化为了在AB之间分配这些不同位数的1,使得AB最相近。
由于 0 <= x < 2^n, 需要考虑两种不同的情况
  • case1:a ≥ 2^nb ≥ 2^n时,对于位数i ≥ n的1,异或x之后结果不变,因此,需要将所有0-n位数范围的1分配给最小的数
  • case2:a < 2^nb < 2^n时,我们只需要把需要分配的最高位数给A,剩余位数分配给B即可
复杂度:

AC代码:

4. 找到 Alice 和 Bob 可以相遇的建筑

给你一个下标从 0 开始的正整数数组 heights ,其中 heights[i] 表示第 i 栋建筑的高度。
如果一个人在建筑 i ,且存在 i < j 的建筑 j 满足 heights[i] < heights[j] ,那么这个人可以移动到建筑 j 。
给你另外一个数组 queries ,其中 queries[i] = [ai, bi] 。第 i 个查询中,Alice 在建筑 ai ,Bob 在建筑 bi 
请你能返回一个数组 ans ,其中 ans[i] 是第 i 个查询中,Alice 和 Bob 可以相遇的 最左边的建筑 。如果对于查询 i ,Alice  Bob 不能相遇,令 ans[i] 为 -1 。

解题思路:

比赛时只想到可以使用离线排序的方式,设置queries[i][0] < queries[i][1],从左向右遍历求解,但当时考虑了单调栈(错误思路),以下参考灵神最小堆的题解:
首先可以对于queries[i][0]queries[i][1]的大小关系不会影响解答,因此默认设置queries[i][0]<queries[i][1],遍历queries可以获取到Alice和Bob的坐标
或者 ,Alice可以直接调到Bob的位置, 就是解答;
否则,我们记录左侧 与其属于的查询编号,最后从小到大遍历建筑时,使用最小堆维护记录
  • 遍历到 时,把在下标i处的「记录」全部加到最小堆中。
  • 在加到最小堆之前,我们可以回答左边所有高度小于 的「记录」,其答案就是i
复杂度:nheights的长度,kqureies的长度

AC代码:

 
 

参考链接

Loading...
目录