- 博客(7)
- 收藏
- 关注
原创 20241010日常训练
时间复杂度:O(nlogU),其中 n 是 nums 的长度,U=max(nums)。二进制数对应集合的大小不会超过 29,因此在 OR 运算下,每个数字至多可以增大 29 次。总体上看,二重循环的总循环次数等于每个数字可以增大的次数之和,即 O(nlogU)。在暴力的基础上做一个修改,在向前取或的过程中,如果已经包含x的所有1位数,也就没有继续扩大数组范围的必要,这样可以保证做出全部答案。给你两个数组,问nums1中可以整除num2*k的对数。
2024-10-10 18:01:47 282
原创 20240927训练日常
在字符串s内选择一个区间,此时a,b,c的数量分别为x,y,z,需要让这个区间最长且a,b,c的数量均小于下x-k,y-k,z-k。做法:如果考虑两边的区间,那么需要维护的就是时间(总区间长度)和选头还是选尾两个变量,这是一个。
2024-09-27 23:52:26 216
原创 20240925训练日常
注意枚举组对的逻辑看上去是 O(nm∣Σ∣ ) 的,但去掉内层 O(∣Σ∣) 的循环后,剩余循环相当于把 ideas 遍历了一遍,是 O(nm),所以总的时间复杂度是 O(nm∣Σ∣)。考虑对这个数组进行分类枚举,根据首字母的不同进行分类,因为后缀字符不会改变,如果我选定两个不同的分类(保证首字母不同),如果一类中的一个后缀也在另一类的后缀中出现说明,此时这个不为答案计入m中,如此去除非法的命名后,两类个数相乘即可,由于有顺序关系需要乘以2。空间复杂度:O(nm+∣Σ∣)。
2024-09-25 20:37:02 416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人