[LeetCode周赛复盘] 第 321 场周赛20221127

news2025/2/27 2:51:26

[LeetCode周赛复盘] 第 321 场周赛20221127

    • 一、本周周赛总结
    • 二、 [Easy] 6245. 找出中枢整数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium]6246. 追加字符以获得子序列
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 6247. 从链表中移除节点
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 6248. 统计中位数为 K 的子数组
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 好难啊,但是怎么过的人这么多。
  • T1暴力或者公式。
  • T2子序列双指针。
  • T3链表题。
  • T4前缀和+哈希表,两种做法。
    在这里插入图片描述

二、 [Easy] 6245. 找出中枢整数

链接: 6245. 找出中枢整数

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

3. 代码实现

class Solution:
    def pivotInteger(self, n: int) -> int:
        s = (1+n)*n//2
        p = 0
        for i in range(1,n+1):
            p += i
            if p == s - p + i:
                return i 
        return -1

三、[Medium]6246. 追加字符以获得子序列

链接: 6246. 追加字符以获得子序列

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • 和判断子序列很像,直接双指针扫描即可。
  • 看s最多能匹配t前缀多长。

3. 代码实现

class Solution:
    def appendCharacters(self, s: str, t: str) -> int:
        m,n = len(s),len(t)
        j = 0
        for i,c in enumerate(s):
            if j<n and t[j] == c:
                j += 1
            if j == n:
                return 0
        # print(n,j)
        return n - j

四、[Medium] 6247. 从链表中移除节点

链接: 6247. 从链表中移除节点

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 比赛时直接转数组然后dp做的,其实可以递归,下面给出递归写法。

3. 代码实现

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]:
        """最后的结果,head一定是最大的,且后缀同样满足这个属性,因此可以递归
        """
        if not head :return head 
        nxt = self.removeNodes(head.next)
        if not nxt:return head 
        if nxt.val > head.val :return nxt 
        head.next = nxt
        return head

五、[Hard] 6248. 统计中位数为 K 的子数组

链接: 6248. 统计中位数为 K 的子数组

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 比赛时写了比较麻烦的左右前缀和,还wa一次。
  • 注意题目,数据是1-n的排列。意味着k一定只出现一次。找到k的位置p。所有子数组都要包含p。
  • k如果是中位数的话,这个数组里小于k的数less一定等于大于k的数big,或less+1=big(偶数长度情况)
  • 于是我们从p出发向两侧扩展数组,使用前缀和统计两边子数组less和big的大小计数。
  • 于是就可以用乘法原理乘起来即可。

  • 更简单的方法可以转换,把原数组转化为:小于k记-1,大于k记1,等于k记10**6。
  • 题目转化成有多少个子数组,子数组和=106或106+1。
  • 这题就是普通的前缀和+哈希表。

3. 代码实现

转化为前缀和+哈希表

class Solution:
    def countSubarrays(self, nums: List[int], k: int) -> int:
        n = len(nums)
        a = []
        mx =10**6
        for v in nums:
            if v < k:
                a.append(-1)
            elif v>k:
                a.append(1)
            else:
                a.append(mx)
        s = 0
        d = Counter()
        d[0] = 1
        ans = 0
        for i,v in enumerate(a):            
            s += v
            ans += d[s-mx]+d[s-mx-1]
            d[s] += 1            
        
        return ans

左右前缀和

class Solution:
    def countSubarrays(self, nums: List[int], k: int) -> int:
        n = len(nums)
        d = {(0,0,0):1}
        p = nums.index(k)
        ans = 1
        
        l,r = Counter(),Counter()
        s = 0
        for j in range(p+1,n):
            s += 1 if nums[j]>k else -1
            r[s] += 1
        ans += r[0]+r[1]
        s = 0
        for j in range(p-1,-1,-1):
            s += 1 if nums[j]>k else -1
            l[s] += 1
        ans += l[0]+l[1]
        
        ans += l[0]*r[0]
        for i in range(1,n):
            ans += l[i]*r[-i]+l[i]*r[-i+1]+r[i]*l[-i]+r[i]*l[-i+1]
        return ans

六、参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker-compose详解和LNMP搭建实战

目录 一、Docker-compose简介 1.前言 2.概述 二、Docker-compose安装 三、YAML文件格式及编写注意事项 1.简介 2.使用方法 四、Docker Compose 常用命令 五、Docker Compose 配置常用字段 六、Docker-compose搭建LNMP实战 一、Docker-compose简介 1.前言 我们知道使…

深度学习与总结JVM专辑(三):垃圾回收器—G1(图文+代码)

垃圾收集器G1前言概述停顿时间模型内存布局传统内存布局过时了G1实现的几个关键细节问题铺垫知识&#xff1a;跨代引用铺垫知识&#xff1a;记忆集&#xff0c;卡表&#xff0c;卡页铺垫知识&#xff1a;写屏障插眼往下看G1内存模型分区Region卡片Card堆Heap分代模型分代垃圾收…

网站分享:7个非常好用的电子书网站

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、 C#、 Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&…

Steam下载MOD至本地文件夹

Steam下载MOD至本地文件夹1 所需app和web2 具体步骤2.1 安装SteamCMD2.2 登录SteamCMD2.3 打开网页端的Steam并搜索你想要的MOD2.4 点击你需要的MOD&#xff0c;并复制链接2.5 将链接放入 https://steamworkshopdownloader.io/2.6 把下载代码放入SteamCMD由于各种原因&#xff…

OpenVINO--初步学习笔记

英特尔发布的针对AI工作负载的一款部署神器当模型训练结束后&#xff0c;上线部署时&#xff0c;就会遇到各种问题&#xff0c;比如&#xff0c;模型性能是否满足线上要求&#xff0c;模型如何嵌入到原有工程系统&#xff0c;推理线程的并发路数是否满足&#xff0c;这些问题决…

java项目_第164期ssm定西扶贫惠农推介系统-_java毕业设计_计算机毕业设计

java项目_第164期ssm定西扶贫惠农推介系统-_java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm定西扶贫惠农推介系统》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、扶贫计划、惠农福利、优秀农民…

【C++】vector的介绍和使用

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;vector 的…

【课设/毕业设计】电力系统潮流计算(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

相控阵天线(九):平面阵列天线综合(不可分离型切比雪夫分布、圆口径泰勒综合、可分离型分布)

目录简介不可分离型分布不可分离型切比雪夫圆口径泰勒综合可分离型分布可分离切比雪夫综合可分离泰勒综合简介 按行、列排列的可分离型矩形平面阵&#xff0c;其阵因子是两个正交排列的直线阵阵因子的乘积。可分离的平面阵方向图在两个主面内是满足预期副瓣电平的&#xff0c;…

SpringMVC学习笔记(一)

目录 一、什么是SpringMVC ? 二、Spring MVC项目的连接(用户 和 程序 的 映射) 三、获取参数的功能的实现 传递较少数量的参数&#xff1a; 通过对象传递大量参数&#xff1a; 获取表单参数&#xff1a; 获取Json对象 上传文件&#xff1a; &#x1f514;一点补充 一、…

家用 NAS 服务器搭建 | 前篇

1、前言 最近一段时间都在折腾家用 NAS 服务器&#xff0c;NAS 系统从最开始选择安装开源的 OMV&#xff08;OpenMediaVault&#xff09;、万由U-NAS&#xff0c;最终决定使用黑群晖。硬件也是一步步从旧笔记本、拆旧笔记本改nas样式、最终也是到万由410机箱。 家庭nas服务器可…

unity rtsp 视频渲染(一)

unity unity 可以说是一个不错的工具&#xff0c;建立三维的场景非常方便&#xff0c;下面我们建立一个三维的场景&#xff0c;并且在三维的场景中和场景外分别建立系统去播放视频。所谓场景内就是在三维中播放视频&#xff0c;场景外就是在三维场景前表面的二维平面中播放视频…

Go-Excelize API源码阅读(三十六)——SetSheetRow、InsertPageBreak

Go-Excelize API源码阅读&#xff08;三十六&#xff09;——SetSheetRow、InsertPageBreak 开源摘星计划&#xff08;WeOpen Star&#xff09; 是由腾源会 2022 年推出的全新项目&#xff0c;旨在为开源人提供成长激励&#xff0c;为开源项目提供成长支持&#xff0c;助力开发…

公司信息系统架构建设规划

企业的信息化建设的基础是构建企业的信息系统架构&#xff08;也可称之为信息化架构&#xff09;&#xff0c;信息系统架构又由应用架构、数据架构、技术架构和治理架构4部分组成&#xff0c;本建议书主要以技术架构、应用架构以及技术架构为对象加以说明。 4.1公司信息系统架…

《MongoDB》Mongo Shell中基本操作-ObjectId和文档创建详解

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 来个关注吧&#xff0c;点个赞…

R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归

通过对用电负荷的消费者进行聚类&#xff0c;我们可以提取典型的负荷曲线&#xff0c;提高后续用电量预测的准确性&#xff0c;检测异常或监控整个智能电网&#xff08;Laurinec等人&#xff08;2016&#xff09;&#xff0c;Laurinec和Luck&#xff08; 2016&#xff09;&…

JavaScript正则表达式加密

正则表达式可以加密吗&#xff1f; 是的&#xff0c;可以。起码可以确定的是在JavaScript编程中是可以的。 正则表达式加密有什么用&#xff1f; 可以隐藏一些重要的、私密的字符串内容&#xff0c;使代码的逻辑、秘密不容易被人窥探。 正则表达式加密示例 例如&#xff1…

1536_AURIX_TriCore内核架构_Trap

全部学习汇总&#xff1a; GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 近段时间一直在跟trap打交道&#xff0c;但是处理得毫无头绪&#xff0c;因此找出来了这一章节看一下。暂时&#xff0c;这方面稍微有了一点框架感&…

观世界赛事,品足球人生--2022世界杯

观世界赛事&#xff0c;品足球人生 – 2022世界杯 1.卡塔尔世界杯百科 2022年卡塔尔世界杯&#xff08;英语&#xff1a;FIFA World Cup Qatar 2022&#xff09;是第二十二届世界杯足球赛&#xff0c;是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足…

iwebsec靶场 SQL注入漏洞通关笔记7- 空格过滤绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入&#xff08;宽字节注入&#xff09;_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入&#xff08;布尔型盲注&#…