[LeetCode周赛复盘] 第 334 场周赛20230226

news2024/11/26 10:48:23

[LeetCode周赛复盘] 第 334 场周赛20230226

    • 一、本周周赛总结
    • 二、 [Easy] 6369. 左右元素和的差值
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium] 6368. 找出字符串的可整除数组
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 6367. 求出最多标记下标
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 6366. 在网格图中访问一个格子的最少时间
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 可能上周太难了,这周题目简单一些。
  • T1 前/后缀和+遍历。
  • T2 利用同余模拟,这题粗心忘记取模wa一次。
  • T3 排序+双指针,想错了wa一次。
  • T4 带限制条件的最短路,堆+bfs,脑子抽了一开始写了个队列bfs , TLE。

在这里插入图片描述

二、 [Easy] 6369. 左右元素和的差值

链接: 6369. 左右元素和的差值

1. 题目描述

在这里插入图片描述

2. 思路分析

计算出左右部分模拟即可。

3. 代码实现

class Solution:
    def leftRigthDifference(self, nums: List[int]) -> List[int]:
        s = sum(nums)
        n = len(nums)
        ans = [0] *n 
        p  = 0
        for i in range(n):
            s -= nums[i]
            ans[i] =  abs(p - s)
            p += nums[i]
        return ans

三、[Medium] 6368. 找出字符串的可整除数组

链接: 6368. 找出字符串的可整除数组

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 利用同余的性质,可以每次都把结果取模,留下的数对m取模结果是一样的。

3. 代码实现

class Solution:
    def divisibilityArray(self, word: str, m: int) -> List[int]:
        n = len(word)
        ans = [0]*n
        p = 0
        for i,v in enumerate(word):
            p = (p*10 + int(v))%m
            if p % m == 0:
                ans[i] = 1
        return ans

四、[Medium] 6367. 求出最多标记下标

链接: 6367. 求出最多标记下标

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 显然最多可以组成n/2对,即长度n。
  • 那么贪心的想,最大的数应该和谁匹配呢,从所有可以匹配的数种找最大值匹配,剩下的数更有可能匹配。
  • 那么排序后,前后两半双指针从后边贪心即可。

3. 代码实现

class Solution:
    def maxNumOfMarkedIndices(self, nums: List[int]) -> int:
        n = len(nums)
        nums.sort()
        if n == 1:
            return 0
        r = n-1
        l = (n-1) // 2
        ans = 0
        for r in range(n-1,l,-1):
            while l>=0 and nums[l]*2 >nums[r]:
                l -= 1
            if l < 0:
                break
            ans += 2
            l -= 1
        return ans        

五、[Hard] 6366. 在网格图中访问一个格子的最少时间

链接: 6366. 在网格图中访问一个格子的最少时间

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 先讨论无法到达的情况:题目限制0,0位置是0一定可以出发,相邻的格子(0,1),(1,0)只能第一步到达,如果他们同时>1,则将被困在起点无法出发,返回-1。(注意数据限制2<=m,n)
  • 若这两个位置能走出去,那么其他位置一定可以通过在相邻附近某两个格子反复横跳的方式等到时间够用(即>grid[i][j]),一定有解。
  • 那么用小顶堆写个bfs即可。
  • 注意,(x,y)和起点差奇数步的话,到达(x,y)的时间也只能是奇数步,因为反复横跳步数是+2的。
    • 因此当遇到奇数步w = grid[x][y]时,到达(x,y)的时间一定是超过当前步数+1,且奇数,即>=w的第一个奇数。
  • 偶数同理。

3. 代码实现

DIRS = [(0,1),(1,0),(0,-1),(-1,0)]
class Solution:
    def minimumTime(self, grid: List[List[int]]) -> int:
        m,n = len(grid),len(grid[0])
        ans = -1
        if grid[0][1] > 1 and grid[1][0] > 1:
            return -1
        vis = [[10**6]*n for _ in range(m)]
        vis[0][0] = 0
        def inside(x,y):
            return 0<=x<m and 0<=y<n
        q = [(0,0,0)]
        while q:
            d,x,y = heappop(q)
            
            for dx,dy in DIRS:
                a,b = x+dx,y+dy
                if inside(a,b) and vis[a][b] >  vis[x][y] + 1:                   
                    w = grid[a][b]
                    if w <= vis[x][y] + 1:
                        vis[a][b] = vis[x][y] + 1
                        # q.append((a,b))
                        heappush(q,(vis[a][b],a,b))
                        
                    elif (a+b)%2 == 0:
                        vis[a][b] = w if w%2==0 else w + 1
                        heappush(q,(vis[a][b],a,b))
                    else:
                        vis[a][b] = w if w%2==1 else w + 1
                        heappush(q,(vis[a][b],a,b))
                    if a == m-1 and b == n-1:
                        return vis[a][b]
                        
        return vis[m-1][n-1]
                        
                

六、参考链接

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

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

相关文章

软件测试面试项目问答怎么回答才能让面试官认可?

四、项目4.1 简单介绍下最近做过的项目根据自己的项目整理完成&#xff0c;要点&#xff1a;1&#xff09;项目背景、业务、需求、核心业务的流程2&#xff09;项目架构&#xff0c;B/S还是C/5&#xff0c;数据库用的什么? 中间件用的什么&#xff1f;后台什么语言开发的&…

vue3+rust个人博客建站日记1-框架开发环境配置。

背景 阅读了陈皓老师《左耳听风》栏目后&#xff0c;更觉个人知识体系停留在“知道”的阶段&#xff0c;真正动起手来&#xff0c;处处制肘。故决定重新上路&#xff0c;按照《左耳听风》的路线&#xff0c;锻炼一下自己。 个人博客建站&#xff0c;主要是为了熟悉一门前端与…

springboot+vue结合,后端学习前端(三)(前端拦截器+后端拦截器)未登录访问其他页面,直接进入登陆界面

前端拦截器后端拦截器处理#号问题使用 History 模式前端部署到后端项目里&#xff08;tomcat版本由8.5.23需要提高到9.0.56了&#xff09;默认的错误页面后端登录拦截器LoginController添加sessionLoginInterceptor拦截器配置到项目里Vuex 与前端登录拦截器下载 Vuex引入Vuex修…

我继续问了ChatGPT关于SAP顾问职业发展前景的问题,大家感受一下

目录 SAP 顾问 跟其他IT工作收入情况相比是怎么样的&#xff1f; 如何成为SAP FICO 优秀的顾问 要想成为SAP FICO 优秀的顾问 &#xff0c;需要ABA开发技能吗 SAP 顾问中哪个类型收入最多&#xff1f; 中国的ERP软件能够取代SAP吗&#xff1f; SAP 顾问 跟其他IT工作收入情…

java+springboot+vue高校学生医疗保险管理系统

医保管理系统是对与职工健康息息相关的档案进行的系统化、自动化的管理&#xff0c;主要是对职工办理的医疗保险的管理&#xff0c;本系统能够很好的适应社会的需求&#xff0c;最大化的为城镇职工提供服务。医疗保险是国家社会保障体系的重要组成部分&#xff0c;也是社会保险…

【Linux】零成本在家搭建自己的私人服务器解决方案

我这个人自小时候以来就特喜欢永久且免费的东西&#xff0c;也因此被骗过&#xff08;花巨款买了永久超级会员最后就十几天&#xff09;。 长大后骨子里也是喜欢永久且免费的东西&#xff0c;所以我不买服务器&#xff0c;用GitHubPage或者GiteePage搭建自己的静态私人博客&…

Python控制CANoe使能TestCase

前面介绍了多种CANoe配置下的dbc文件添加,常见的配置我们能够常用的就是testcase的使能和环境变量的设置,针对于环境变量的问题,我们下次再进行详聊,今天主要聊一下测试脚本的使能。在做这块之前,我们第一步就需要了解我们的测试脚本的层级是都包含有哪些? 一、测试脚本结…

Mysql 数据库版本升级V1.0

序号版本描述修改审查11.0mysql升级描述&#xff1a;甲方安全审计&#xff0c;发现数据库漏洞&#xff0c;或者定期排查数据库漏洞环境&#xff1a; linux系统准备&#xff1a;第一步下载mysql 安装包https://downloads.mysql.com/archives/community/https://dev.mysql.com/do…

【华为OD机试模拟题】用 C++ 实现 - 新员工座位安排系统(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明新员工座位安排系统题目输入输出示例一输入输出示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 …

产业链金风控基本逻辑

产业链金风控基本逻辑 产业链金融平台作为一个助贷平台&#xff0c;很大程度上是为银行等金融机构进 行引流&#xff0c;贷款的审批本质上还是依赖金融机构的风控。那么&#xff0c;产业链金融 平台是否还有必要建设自己的风控模型呢?笔者给出的答案是肯定的。 一方面&#x…

《高性能MySQL》——MySQL基准测试(笔记)

文章目录二、MySQL基准测试2.1 为什么需要基准测试2.2 基准测试的策略2.2.1 测试何种指标2.3 基准测试方法2.3.1设计和规划基准测试2.3.2 基准测试应该运行多长时间2.3.3 获取系统性能和状态2.3.4 获得准确的测试结果2.3.5 运行基准测试并分析结果2.3.6 绘图的重要性2.4 基准测…

量化学习(一)数据获取

试验环境 windows10 AnacondaPyCharm&#xff08;小白参考文章&#xff1a;https://coderx.com.cn/?p14&#xff09; VM中安装MySQL5.7&#xff08;设置utf8及相应配置优化&#xff09; 关于复权 小白参考文章&#xff1a;https://zhuanlan.zhihu.com/p/469820288 数据来源 AK…

轻量级网络模型ShuffleNet V2

在学习ShuffleNet V2内容前需要简单了解卷积神经网络和MobileNet,以及Shuffnet V1的相关内容&#xff0c;大家可以出门左转&#xff0c;去看我之前的几篇博客MobileNet发展脉络&#xff08;V1-V2-V3&#xff09;&#xff0c;轻量级网络模型ShuffleNet V1&#x1f197;&#xff…

Python—for循环

&#xff08;1&#xff09;for 循环&#xff1a; for循环格式&#xff1a; for 零时变量 in 可迭代对象:   重复执行的代码1   重复执行的代码2   … 代码实例&#xff1a; str_data 12345 # for 提取容器里面的所有数据输出 循环做某个事情# 循环的运行次数和字符串…

【RabbitMQ笔记07】消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式

这篇文章&#xff0c;主要接收消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式。 目录 一、消息队列 1.1、发布确认模式 1.2、案例代码 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写生产者【消息确认--单条确认】 &#xff08;3&#xf…

Log4j2基本使用

文章目录1. Log4j2入门2. Log4j2配置3. Log4j2异步日志4. Log4j2的性能Apache Log4j 2是对Log4j的升级版&#xff0c;参考了logback的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带 来了一些重大的提升&#xff0c;主要有&#xff1a; 异常处理&#xff0c…

ubuntu/linux系统知识(36)linux网卡命名规则

文章目录背景命名规范系统默认命名规则优势背景 很久以前Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等&#xff0c;属于biosdevname 命名规范。 服务器通常有多块网卡&#xff0c;有板载集成的&#xff0c;同时也有插在PCIe插槽的。Linux系统的命名原来是et…

基于SpringCloud的可靠消息最终一致性01:定理、解决方案和框架

在互联网发展的早期,单体架构是主流的开发模式。因为访问的用户不多,所以整个系统的结构比较简单,就像一口竖井,从上到下,一通到底,如下图所示: 图一:单体应用 随着业务复杂度的不断提升,以及用户需求的不断增加,原来单个的业务系统已经不堪重负了。就好像一个窗口前…

redis数据结构的底层实现

文章目录一.引言二.redis的特点三.Redis的数据结构a.字符串b.hashc.listd.sete.zset(有序集合)一.引言 redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value的NoSQL数据库。 通常使用redis作为缓存中间件来降低数据库的压力&#xff0c;除此…

CV学习笔记-MobileNet

MobileNet 文章目录MobileNet1. MobileNet概述2. 深度可分离卷积&#xff08;depthwise separable convolution&#xff09;2.1 深度可分离卷积通俗理解2.2 深度可分离卷积对于参数的优化3. MobileNet网络结构4. 代码实现4.1 卷积块4.2 深度可分离卷积块4.3 MobileNet定义4.4 完…