5993. 将找到的值乘以 2

我的做法是将数组从小到大排序之后,再将找到的值乘以2:

class Solution:def findFinalValue(self, nums: List[int], original: int) -> int:nums.sort()for num in nums:if original == num:original *= 2return original

然而更好的做法应该是使用集合 set,判断数字是否在集合中即可:

class Solution:def findFinalValue(self, nums: List[int], original: int) -> int:s = set(nums)cnt = originalwhile cnt in s:cnt *= 2return cnt

5981. 分组得分最高的所有下标

class Solution:def maxScoreIndices(self, nums: List[int]) -> List[int]:n = len(nums)ans = []temp = 0for i in range(n):ans.append(temp)if nums[i] == 0:temp += 1else:temp -= 1ans.append(temp)maxi = max(ans)return [i for i in range(len(ans)) if ans[i] == maxi]

由题目不难看出,如果把 0 作为 +1 分,1 作为 -1 分,则从左到右分数最高的位置就是最好的划分点,这里注意划分的位置是比数组长度大 1 的。

5994. 查找给定哈希值的子串

class Solution:def subStrHash(self, s: str, power: int, modulo: int, k: int, hashValue: int) -> str:cnt = 0n = len(s)s = s[::-1] # 使用逆序的字符串# 第一个字符串(还差最后一位),所以这里 power 最高只有 k - 2 次for i in range(k - 1):cnt = (cnt * power + (ord(s[i]) - ord('a') + 1)) % moduloans = ""for i in range(k - 1, n):cnt = (cnt * power + (ord(s[i]) - ord('a') + 1)) % modulo # 加上右边的字符if cnt == hashValue: ans = s[i - k + 1 : i + 1]cnt = (cnt - (ord(s[i - k + 1]) - ord('a') + 1) * pow(power, k - 1, modulo) % modulo) % modulo # 减去左边的字符return ans[::-1]

这题如果从左到右直接做的话,肯定会超时。最好的思路应该是将字符串逆序,然后用累加器 cnt 乘以 power 然后加右边的字符 (ord(s[i]) - ord(‘a’) + 1),同时减去左边字符的指数 (ord(s[i - k + 1]) - ord(‘a’) + 1) * pow(power, k - 1, modulo) % modulo,即滑动窗口来代替指数运算。这里应该学习的是 pow 函数:pow(x,y,z) 等价于 x ** y % z

Leetcode周赛复盘——第 278 场力扣周赛相关推荐

  1. Leetcode周赛复盘——第 276 场力扣周赛

    第一次参加周赛,AC了三道题,也算不错的成绩了,从现在开始每周的周赛我都会参加并且复盘,有兴趣的小伙伴可以一起讨论. 5980. 将字符串拆分为若干长度为 k 的组 class Solution:de ...

  2. Leetcode周赛复盘——第 71 场力扣双周赛与第 279 场力扣周赛

    双周赛: 5984. 拆分数位后四位数字的最小和 class Solution:def minimumSum(self, num: int) -> int:a, b, c, d = sorted ...

  3. LeetCode 第 58 场力扣夜喵双周赛(动态规划、马拉车算法,前后缀处理)/ 第 253 场力扣周赛(贪心,LIS)

    第 58 场力扣夜喵双周赛 两道600多 5193. 删除字符使字符串变好 题目描述 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 ...

  4. 第 304 场力扣周赛

    1.Introduction 平常做代码题目较少,今天迟迟不能入睡,我思考了下,确实有很大概率,对十年内做的目标,有很大可能不能实现.于是做了几道题勉强让自己心安.一边喝着牛栏山壮精神,一边写Leet ...

  5. 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)

    第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...

  6. 第 254 场力扣周赛(KMP、贪心、快速幂、二分+多源bfs、并查集 + 时光倒流)

    第 254 场力扣周赛 稀里糊涂双眼双眼惺忪的做了三道,错了4次...还是600来名 5843. 作为子字符串出现在单词中的字符串数目 题目描述 给你一个字符串数组 patterns 和一个字符串 w ...

  7. 第 270 场力扣周赛

    第一百一十二天 --- 第 270 场力扣周赛 题目一 思路:直接模拟 细节 代码 附加 题目二 思路 细节 代码 题目一 力扣:2094. 找出 3 位偶数 思路:直接模拟 1.因为构造所有三位数, ...

  8. 第 321 场力扣周赛

    第 321 场力扣周赛 T1 求和 class Solution { public:int pivotInteger(int n) {int sum=(1+n)*n/2;int cnt=0;for(i ...

  9. LeetCode第 57 场力扣夜喵双周赛(差分数组、单调栈) and 第 251 场力扣周赛(状态压缩动规,树的序列化,树哈希,字典树)

    LeetCode第 57 场力扣夜喵双周赛 离knight勋章越来越近,不过水平没有丝毫涨进 1941. 检查是否所有字符出现次数相同 题目描述 给你一个字符串 s ,如果 s 是一个 好 字符串,请 ...

最新文章

  1. iOS下JS与OC互相调用(一)--UIWebView 拦截URL
  2. matlab 编arm_Matlab将实现STM32的代码生成、调试及建模功能
  3. php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用
  4. Hibernate的openSession和getCurrentSession区别
  5. Maven:构建web工程出现Failed to execute goal org.apache:maven-archetype-plugin:3.1.1:generate (default-cli)
  6. 这些道理,未必正确,一定准确
  7. RuoYi-Cloud 部署篇_01(windows环境 Oracle+nginx版本)
  8. RT-Thread中如何预编译一个.c文件
  9. TCP-Traceroute 核心代码
  10. 不是方阵有逆矩阵吗_Lecture 3 | 乘法和逆矩阵
  11. steam安裝位置linux,「Linux」- 安装 Steam 客户端 @20210219
  12. NM3000多用表校验仪
  13. 缘,如雁渡寒潭,似风吹疏竹
  14. 程序员,30岁+,看完让你不再焦虑
  15. 三大思维导图软件比较
  16. 黑马程序员---java基础-Java之IO
  17. stm32F103R6之BKP(备份寄存器)
  18. 解释器模式计算机Demo
  19. C#连接Access数据库(详解)
  20. 国产工程机械控制器SPC-SFMC-X2214A资料

热门文章

  1. HoloLens开发手记-配置开发环境 Install the tools
  2. [转]【JAVA各版本特性】JAVA 1.0
  3. [转]redis 5.0.5 5分钟搭建redis集群
  4. 【ArcGIS Pro微课1000例】0010:ArcGIS Pro导入ArcMap样式符号库——以国土三调样式为例
  5. VB常用内部函数大全一览表(建议收藏)
  6. 【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例
  7. Android之可以做的两件坏事---破解锁屏密码和获取Wifi密码
  8. 王道408数据结构——第四章 串(KMP算法)
  9. 中国这10条逆天公路,火爆外网,你都认识多少?
  10. 我国最新十大黑科技发布,颠覆你的想象!