leetcode contest 380
t3
比较难得构造题目,反而其他题目都是简单题目。
3005. 最大频率元素计数
给你一个由 正整数 组成的数组 nums
。
返回数组 nums
中所有具有 最大 频率的元素的 总频率 。
元素的 频率 是指该元素在数组中出现的次数。
示例 1:
输入:nums = [1,2,2,3,1,4] |
示例 2:
输入:nums = [1,2,3,4,5] |
提示:
1 <= nums.length <= 100
1 <= nums[i] <= 100
地址
https://leetcode.cn/contest/weekly-contest-380/problems/count-elements-with-maximum-frequency/
题意
直接模拟即可
思路
- 这接找到对角线最长,且面积最大的矩形返回面积即可。
- 复杂度分析:
- 时间复杂度:$O(n)$,其中 $n$ 表示给定数组的长度。$\text{s_ptr}$
- 空间复杂度:$O(1)$。
代码
class Solution: |
3006. 找出数组中的美丽下标 I
给你一个下标从 0 开始的字符串 s
、字符串 a
、字符串 b
和一个整数 k
。
如果下标 i
满足以下条件,则认为它是一个 美丽下标:
0 <= i <= s.length - a.length
s[i..(i + a.length - 1)] == a
存在下标
j
使得:
0 <= j <= s.length - b.length
s[j..(j + b.length - 1)] == b
|j - i| <= k
以数组形式按 从小到大排序 返回美丽下标。
示例 1:
输入:s = "isawsquirrelnearmysquirrelhouseohmy", a = "my", b = "squirrel", k = 15 |
示例 2:
输入:s = "abcd", a = "a", b = "a", k = 4 |
提示:
1 <= k <= s.length <= 105
1 <= a.length, b.length <= 10
s
、a
、和b
只包含小写英文字母。
地址
https://leetcode.cn/contest/weekly-contest-380/problems/find-beautiful-indices-in-the-given-array-i/
题意
kmp匹配,二分查找,kr字符串哈希
思路
- 本质是我们知道字符串 $a,b$ 在字符串 $s$ 中的匹配位置,并检测 $a$ 中的每个匹配位置 $i$,是否存在位置 $j$ 在字符串 $s$ 中匹配 $b$, 此时 $j$ 满足 $j \in[i - k, i+k]$, 题目的关键在于两点:
- 匹配的字符串位置序列:此时我们可以用
kmp
或者 $KR$ 字符串匹配算法,计算所有可能的匹配位置即可。 - 对于每个位置 $i$ 是否存在位置 $j$ 与其匹配:此时我们可以用二分查找找到 大于等于$i-k$ 的其实位置 $x$, 同时找到大于 $i + k$ 的起始位置 $y$, 此时检测 $x$ 与 $y$ 是否相等即可。
- 匹配的字符串位置序列:此时我们可以用
- 复杂度分析:
- 时间复杂度:$O(n \log n + m)$, $n$ 表示给定字符串 $s$ 的长度, $m$ 表示给定字符串 $a$ 与 $b$ 的长度之和;
- 空间复杂度:$O(n)$;
代码
class Solution: |
3007. 价值和小于等于 K 的最大数字
给你一个整数 k
和一个整数 x
。
令 s
为整数 num
的下标从 1 开始的二进制表示。我们说一个整数 num
的 价值 是满足 i % x == 0
且 s[i]
是 设置位 的 i
的数目。
请你返回 最大 整数 num
,满足从 1
到 num
的所有整数的 价值 和小于等于 k
。
注意:
- 一个整数二进制表示下 设置位 是值为
1
的数位。 - 一个整数的二进制表示下标从右到左编号,比方说如果
s == 11100
,那么s[4] == 1
且s[2] == 0
。
示例 1:
输入:k = 9, x = 1 |
示例 2:
输入:k = 7, x = 2 |
提示:
1 <= k <= 1015
1 <= x <= 8
地址
题意
构造题目,数学计算题目
思路
数学计算题目相关
复杂度分析:
- 时间复杂度:$O(n)$,其中 $n$ 表示给定的数组的长度。
- 空间复杂度:$O(n)$,其中 $n$ 表示给定的数组的长度。
代码
3008. 找出数组中的美丽下标 II
给你一个下标从 0 开始的字符串 s
、字符串 a
、字符串 b
和一个整数 k
。
如果下标 i
满足以下条件,则认为它是一个 美丽下标 :
0 <= i <= s.length - a.length
s[i..(i + a.length - 1)] == a
存在下标
j
使得:
0 <= j <= s.length - b.length
s[j..(j + b.length - 1)] == b
|j - i| <= k
以数组形式按 从小到大排序 返回美丽下标。
示例 1:
输入:s = "isawsquirrelnearmysquirrelhouseohmy", a = "my", b = "squirrel", k = 15 |
示例 2:
输入:s = "abcd", a = "a", b = "a", k = 4 |
提示:
1 <= k <= s.length <= 5 * 105
1 <= a.length, b.length <= 5 * 105
s
、a
、和b
只包含小写英文字母。
地址
题意
kmp匹配,二分查找,kr字符串哈希
思路
- 与 $T2$ 一样的题目,本质是我们知道字符串 $a,b$ 在字符串 $s$ 中的匹配位置,并检测 $a$ 中的每个匹配位置 $i$,是否存在位置 $j$ 在字符串 $s$ 中匹配 $b$, 此时 $j$ 满足 $j \in[i - k, i+k]$, 题目的关键在于两点:
- 匹配的字符串位置序列:此时我们可以用
kmp
或者 $KR$ 字符串匹配算法,计算所有可能的匹配位置即可。 - 对于每个位置 $i$ 是否存在位置 $j$ 与其匹配:此时我们可以用二分查找找到 大于等于$i-k$ 的其实位置 $x$, 同时找到大于 $i + k$ 的起始位置 $y$, 此时检测 $x$ 与 $y$ 是否相等即可。
- 匹配的字符串位置序列:此时我们可以用
- 复杂度分析:
- 时间复杂度:$O(n \log n + m)$, $n$ 表示给定字符串 $s$ 的长度, $m$ 表示给定字符串 $a$ 与 $b$ 的长度之和;
- 空间复杂度:$O(n)$;
代码
class Solution: |
欢迎关注和打赏,感谢支持!
扫描二维码,分享此文章