码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [LeetCode周赛复盘] 第 311 场周赛20220918


    [LeetCode周赛复盘] 第 311 场周赛20220918

      • 一、本周周赛总结
      • 二、 [Easy] 6180. 最小偶倍数
        • 1. 题目描述
        • 2. 思路分析
        • 3. 代码实现
      • 三、[Medium] 6091. 划分数组使最大差为 K
        • 1. 题目描述
        • 2. 思路分析
        • 3. 代码实现
      • 四、[Medium] 6182. 反转二叉树的奇数层
        • 1. 题目描述
        • 2. 思路分析
        • 3. 代码实现
      • 五、[Hard] 6183. 字符串的前缀分数和
        • 1. 题目描述
        • 2. 思路分析
        • 3. 代码实现
      • 六、参考链接

    一、本周周赛总结

    • 这场很水!手速场,是我目前最好成绩了。
    • T4模板不熟悉调了半天,要不然还能进两分钟
      在这里插入图片描述

    二、 [Easy] 6180. 最小偶倍数

    链接: 6180. 最小偶倍数

    1. 题目描述

    在这里插入图片描述
    。

    2. 思路分析

    定级Easy。
    就是lcm,最小公倍数。
    由于是和2取最小公倍:奇数的是2*x,偶数是x本身。
    或者用库函数lcm也可以。

    3. 代码实现

    class Solution:
        def smallestEvenMultiple(self, n: int) -> int:
            if n&1==0:
                return n
            else:
                return n*2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、[Medium] 6091. 划分数组使最大差为 K

    链接: 6091. 划分数组使最大差为 K

    1. 题目描述

    在这里插入图片描述

    2. 思路分析

    定级Medium。

    • 裸DP了可以说是。
    • 定义f[i]为以i为结尾的连续字符串长度。
    • 显然每个位置至少是1.
    • 如果当前字符和前一个字符连续,那么当前f[i] = f[i-1]+1
    • 最后求max即可。

    3. 代码实现

    class Solution:
        def longestContinuousSubstring(self, s: str) -> int:
            n = len(s)
            f = [1]*n
            for i in range(1,n):
                if ord(s[i])- ord(s[i-1]) == 1:
                    f[i] = f[i-1]+1
            return max(f)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、[Medium] 6182. 反转二叉树的奇数层

    链接: 6182. 反转二叉树的奇数层

    1. 题目描述

    在这里插入图片描述

    2. 思路分析

    定级Medium。

    • 一个较裸的层先。
    • 由于是完全二叉树,每层节点数是偶数。
    • 判断一下层数,翻转即可。

    3. 代码实现

    class Solution:
        def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
            if not root:
                return root
            
            q = [root]
            depth = 0
            while q:
                nq = []
                
                for u in q:
                    if u.left:
                        nq.append(u.left)
                    if u.right:
                        nq.append(u.right)
                if depth & 1:
                    n = len(q)
                    for i in range(n//2):
                        q[i].val, q[n-i-1].val = q[n-i-1].val, q[i].val                       
                
                depth += 1
                q = nq
            return root
                
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    五、[Hard] 6183. 字符串的前缀分数和

    链接: 6183. 字符串的前缀分数和

    1. 题目描述

    在这里插入图片描述

    2. 思路分析

    定级Hard。

    • 字典树模板题。
    • py写字典树就是方便,不用数组了!
    • 建树的时候记录每层字符出现次数。
    • 然后遍历每个字符串,在树中find的时候,累加每个字符对应的次数即可。

    3. 代码实现

    class Solution:
        def sumPrefixScores(self, words: List[str]) -> List[int]:
            trie = {}
            for s in words:
                pos = trie
                for c in s:
                    if c not in pos:
                        pos[c] = {}
                        pos[c]['cnt'] = 0
                    pos = pos[c]
                    pos['cnt'] += 1
                pos['end'] = s
            # print(trie)
            
            ans = []
            def find(s):
                pos = trie
                ret = 0
                for c in s:
                    if c not in pos:
                        return ret
                    ret += pos[c]['cnt']
                    pos = pos[c]
                    # if 'end' in pos:
                    #     return
                return ret
                    
            for s in words:
                ans.append(find(s))
            return ans
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    六、参考链接

    • 链接: [python刷题模板] 字典树
  • 相关阅读:
    10分钟讲清int 和 Integer 的区别
    【最详细】最新最全Redis面试大全(42道)
    计算机视觉系列 -OpenMMLab 之 MMRazor 模型轻量化瑞士军刀 蒸馏、剪枝、网络结构搜索全方向覆盖
    Redis持久化方式
    Nacos-Go-Sdk代码逻辑解析
    Linux 性能分析工具- Atop安装和使用
    从0搭建vue3组件库: Input组件
    PHP知识大全
    C# [字节数组]与[16进制字符串]互相转换 - CodePlus系列
    【UniApp】-uni-app-路由
  • 原文地址:https://blog.csdn.net/liuliangcan/article/details/126914994
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号