码农知识堂 - 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刷题模板] 字典树
  • 相关阅读:
    TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践
    游戏扫码登录+多功能工具箱 微信小程序源码
    服务器百万并发的原理与实现
    王爽《汇编语言》检测点11.2详细解析
    【Vue3从零开始-实战】S11:setup函数的职责及封装setup函数中的逻辑
    Go中的错误处理
    深度学习应用篇-计算机视觉-OCR光学字符识别[7]:OCR综述、常用CRNN识别方法、DBNet、CTPN检测方法等、评估指标、应用场景
    xshell连接vmWare虚拟机(centos7)
    Type Script的变量类型
    Linux服务器遇到攻击封禁IP、解封IP
  • 原文地址:https://blog.csdn.net/liuliangcan/article/details/126914994
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号