[LeetCode周赛复盘] 第 340 场周赛20230409

news/2024/5/19 6:23:14/文章来源:https://blog.csdn.net/liuliangcan/article/details/130040120

[LeetCode周赛复盘] 第 340 场周赛20230409

    • 一、本周周赛总结
    • 二、 6361. 对角线上的质数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、6360. 等值距离和
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、6359. 最小化数对的最大差值
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、 6353. 网格图中最少访问的格子数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现。
    • 六、参考链接

一、本周周赛总结

  • 这周都还挺难的。
  • T1 判断质数。
  • T2 预处理+前缀和+二分。
  • T3 二分答案。
  • T4 并查集优化剪枝转移状态的BFS(和上周一样)。

在这里插入图片描述

二、 6361. 对角线上的质数

链接: 6361. 对角线上的质数

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • 由于数据范围4e6,没敢上筛;但是n小,所以暴力了(其实可以上筛);结果没判断1是合数,结果wa了。。

  • 这题证明了py的埃氏筛就是比欧拉筛快。
  • 在这里插入图片描述
    在这里插入图片描述
  • 在这里插入图片描述

3. 代码实现


class Solution:def diagonalPrime(self, nums: List[List[int]]) -> int:p = set()m,n = len(nums),len(nums[0])for i in range(n):p.add(nums[i][i])p.add(nums[i][n-i-1])def is_prime(x):            if x <=1:return Falseif x == 2 or x == 3:return True for i in range(2,int(x**0.5)+1):if x % i ==0:return False return Trueans = 0for x in p:if is_prime(x):ans = max(ans,x)return ans

三、6360. 等值距离和

链接: 6360. 等值距离和

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 一看考过差不多的,但是要分组。
  • 忘记预处理Tle。。
  • 按值分组,记录下标列表。
  • 对每个位置i,二分对应的列表找到i的位置。
  • 那么ans[i]可以用前缀和/后缀和计算了。

3. 代码实现

class Solution:def distance(self, nums: List[int]) -> List[int]:n = len(nums)d = defaultdict(list)for i,v in enumerate(nums):d[v].append(i)pres = defaultdict(list)for k,v in d.items():pres[k] =  [0] + list(accumulate(v))ans = [0] * nfor i,v in enumerate(nums):p = d[v]n = len(p)if len(p)<=1:continue pre = pres[v]pos = bisect_left(p,i)# print(p,pre,pos)ans[i] = i*(pos+1) - pre[pos+1] + pre[-1] - pre[pos+1] - i*(n-pos-1)return ans

四、6359. 最小化数对的最大差值

链接: 6359. 最小化数对的最大差值

1. 题目描述

在这里插入图片描述

2. 思路分析

最大值最小化,警觉。
  • 最大值最小化等价于二分答案。
  • 设f(x)为选出的序列中最大差值不超过x时,能否找到s对序列。
  • 显然,若f(x)==True,则f(x+1)一定是True,f(x-1)不一定,因此有二段性。找到最小的x即可。
  • f(x)怎么写呢,要让差值尽可能小,考虑每个数,排序后和相邻的数据组合就是最小值。
  • 贪心的试图组合每个数即可。你可能会质疑贪心的正确性:考虑(a,b,c,d),若ab能组合,那会使选出的对+1;如果不组合,b也只可能跟后边的c组合,而且占用了c,不会使答案更优。

3. 代码实现

class Solution:def minimizeMax(self, nums: List[int], p: int) -> int:n = len(nums)nums.sort()def ok(x):s = 0i  = 0while i < n-1:if nums[i+1] - nums[i] <= x:s += 1i += 1i += 1return s >= p return bisect_left(range(10**9+1),True,key=ok)    

五、 6353. 网格图中最少访问的格子数

链接: 6353. 网格图中最少访问的格子数

1. 题目描述

在这里插入图片描述

2. 思路分析

没想到出了上周T4的加强版。
  • 乍一看是普通BFS最短路,但是由于转移目标是一个range(注意是连续的范围),暴力转移可能会TLE。
  • 因此可以用有序集合或者并查集删除,转移时直接通过数据结构找下一个转移目标,这样每个目标只会被访问一次,就可以AC啦!
  • 时间复杂度O(nm),这里认为并查集的均摊复杂度是O(1)。

  • 对每行每列都建立独立的并查集,一共m+n个。
  • 当访问(x,y)后,把它和右边/下边的坐标连接,union对应的(x,y+1)和(x+1,y+1),这样就等于删除(x,y)。
  • 我提交的版本没有连接另一个方向的坐标,也过了,但是跑得慢一点。应该是不影响正确性的,但每个坐标要访问两次了。

3. 代码实现。

class DSU:def __init__(self, n):self.fathers = list(range(n))def find_fa(self, x):fs = self.fatherst = xwhile fs[x] != x:x = fs[x]while t != x:fs[t], t = x, fs[t]return xdef union(self, x: int, y: int) -> bool:x = self.find_fa(x)y = self.find_fa(y)if x == y:return False# if self.size[x] > self.size[y]:  # 注意如果要定向合并x->y,需要干掉这个;实际上上边改成find_fa后,按轶合并没必要了,所以可以常关#     x, y = y, xself.fathers[x] = yreturn Trueclass Solution:def minimumVisitedCells(self, grid: List[List[int]]) -> int:m,n = len(grid),len(grid[0])if m==n==1:return 1def inside(x,y):return 0<=x<m and 0<=y<nrows = [DSU(n+1) for _ in range(m)]cols = [DSU(m+1) for _ in range(n)]ans = 1q = deque([(0,0)])rows[0].union(0,1)cols[0].union(0,1)while q:ans += 1for _ in range(len(q)):x,y = q.popleft()if x == m-1 and y == n-1:return ans - 1mn,mx = min(y+1,n-1),min(grid[x][y]+y,n-1)dsu1,dsu2 = rows[x],cols[y]while mn <= mx:mn = dsu1.find_fa(mn)if mn <= mx:if x == m-1 and mn == n-1:return ansq.append((x,mn))dsu1.union(mn,mn+1)cols[mn].union(x,x+1)mn += 1mn,mx = min(x+1,m-1),min(grid[x][y]+x,m-1)while mn <= mx:mn = dsu2.find_fa(mn)if mn <= mx:if mn == m-1 and y == n-1:return ansq.append((mn,y))dsu2.union(mn,mn+1)rows[mn].union(y,y+1)mn += 1                                return -1       

六、参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS实践06 自定义消息类型

文章目录运行环境&#xff1a;思路&#xff1a;1.1 定义.msg文件1)功能包下新建 msg 目录&#xff0c;添加文件 Person.msg2)修改package.xml3)修改CMakeLists.txt2.1 自定义消息调用(C)1&#xff09;编译后修改includePath2&#xff09;发布方实现2.1修改CMakeLists.txt2.3运行…

【OpenCV-Python】cvui 之 trackbar

CVUI 之 trackbar cvui::trackbar() 渲染一个 trackbar&#xff0c; 可以左右拖动或点击对数字进行增加或减少的调整。 不使用离散间隔 使用离散间隔 Python import numpy as np import cv2 import cvuidef trackbar_test():WINDOW_NAME Trackbar-Test# 创建画布frame np.z…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡&#x1f64c; 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐&#x1f600;时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于&#x1f493; 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…

LVGL v8学习笔记 |12 - 移植LVGL 8.3到ESP32C3开发板(ST7789)

一、移植前的准备 1. 基础工程 ESP32-IDF开发笔记 | 03 - 使用SPI外设驱动ST7789 SPILCD2. lvgl源码 https://github.com/lvgl/lvgl下载最新发布的 8.3.6 版本:https://github.com/lvgl/lvgl/releases/ 二、移植lvgl 1. 复制lvgl源码到工程中 将下载的 lvgl-8.3.6 文件夹直…

JSON数据遍历之for-in

JSON数据遍历之for-in object 本身就是无对象的集合&#xff0c;因此在用 for-in 语句遍历对象的属性时&#xff0c;遍历出的属性顺序与对象定义时不同。 W3C标准 根据 ECMA-262&#xff08;ECMAScript&#xff09;第三版中描述&#xff0c;for-in 语句的属性遍历的顺序是由对…

KlayGE-001-简介

KlayGE 引擎学习-001 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWlSlet9-1680688988724)(images/KlayGE_logo.png)] 一、KlayGE引擎介绍 软件简介 KlayGE中文译为&#xff1a;粘土游戏引擎&#xff0c;是一个开源、跨平台&#xff0c;基于插…

6-MATLAB APP Design-表格组件(uitable)

此博文通过MATLAB APP Design实现对学生成绩的处理,具体的功能包括读取表格数据、添加学生数据、计算总成绩、成绩排序+以及表格的保存。 一、APP 界面设计展示 1. 在画布中拖入面板、表格和四个按钮,布局如下。将面板的title写为“学生成绩计算器”并居中,将四个按钮的t…

游戏开发之Unity2021熟悉基本工具

接上一节通用渲染管线项目搭建 导入天空盒素材&#xff1a;在窗口中选择资源商店后会弹出下面的图片&#xff0c;在资源商店中找到我们想要的天空盒素材&#xff0c;将素材在unity中打开&#xff0c;如下面的第二幅图中就是我选择的天空盒素材&#xff0c;在这里可能会遇到一个…

Centos7搭建Ngrok内网穿透

一、安装gcc和git(用于下载ngrok源码) yum install gcc -y yum install git -y 二、安装go语言环境 yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 三、检查环境安装 git --version //( > 1.7 ) go version 四…

通读《技术管理实战36讲》1、自我倾听篇

你好&#xff0c;我是小Z&#xff0c;一个工作在交付前线的程序员&#xff0c;我们正在通读《技术管理实战36讲》&#xff0c;作者刘建国。今天我们要梳理的章节是“自我倾听篇”。 在第1篇《多年前的那些工程师都去哪了&#xff1f;》中&#xff0c; 作者借助上周的“老知道人…

linux系统中cat命令的详细用法

在Linux中&#xff0c;cat命令是一个很常用的命令&#xff0c;它的作用是将文件内容输出到屏幕上&#xff0c;或者将多个文件合并成一个文件。下面是cat命令的一些常用用法&#xff1a; ​1. 显示文件内容 使用cat命令可以打印出文件的内容&#xff0c;如&#xff1a; cat fi…

[Qt 教程之Widgets模块] —— QFormLayout表单布局

Qt系列教程总目录 文章目录一、创建QFormLayout二、成员函数2.1. 对行操作2.2. 操作布局项2.3. 间距2.4. 设置布局规则2.5. 对齐方式表单布局 QFormLayout 以两列形式布局其子项。左列由标签组成&#xff0c;右列由小部件&#xff08;行编辑器、数字调整框等&#xff09;组成。…

FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持

目录1、前言2、目前我这里已有的图像处理方案3、暗通道先验算法介绍4、本图像去雾模块的优缺点5、vivado工程详解vivado工程1详解vivado工程2详解6、上板调试验证7、福利&#xff1a;工程源码获取1、前言 本文详细描述了FPGA实现图像去雾的实现设计方案&#xff0c;采用暗通道…

C++文件加密篇(基于char数组进行可逆加密)

严格意义上的加密算法有对称加密算法和非对称加密算法&#xff0c;对称加密算法是指加密与解密的key相同&#xff0c;而非对称加密算法是指加密&#xff08;使用公钥&#xff0c;所有人都可以获取&#xff09;与解密&#xff08;使用私钥&#xff0c;只有指定方有私钥&#xff…

Robosense激光雷达Linux配置

文章目录1.1 速腾rs16连接&#xff1a;1.2 网络配置1&#xff09;官方说明2&#xff09;设置网络3&#xff09;检查是否连接成功2.1 激光雷达ROS包下载/编译1)下载ROS包2&#xff09;安装libpcap依赖3&#xff09;修改编译模式4&#xff09;config文件配置5&#xff09;编译并运…

【数据结构与算法】一、数据结构的基本概念

文章目录一、数据结构的基本概念1.1 数据结构的研究内容1.2 数据类型和抽象数据类型1.3 算法和算法分析1.3.1 算法的时间复杂度1.3.2 算法时间效率的比较1.4 知识回顾一、数据结构的基本概念 1.1 数据结构的研究内容 1.2 数据类型和抽象数据类型 抽象数据类型&#xff08;ADT…

[入门必看]数据结构4.1:串的定义和实现

[入门必看]数据结构4.1&#xff1a;串的定义和实现第四章 串4.1 串的定义和实现知识总览4.1.1_串的定义和基本操作4.1.2_串的存储结构4.1.1_串的定义和基本操作串的定义串 V.S 线性表串的基本操作串的比较操作字符集编码4.1.2_串的存储结构串的顺序存储串的链式存储基本操作的实…

4月9日第壹简报,星期日,农历闰二月十九

4月9日第壹简报&#xff0c;星期日&#xff0c;农历闰二月十九坚持阅读&#xff0c;静待花开1. “2023中国品牌女性500强”榜单揭晓&#xff0c;屠呦呦、张桂梅、董明珠、刘洋、孟晚舟、谷爱凌等入选。2. 京东集团副总裁&#xff1a;将在今年发布“京东版”ChatGPT。3. 以冒名顶…

大数据Flink进阶(十八):Flink执行图和TaskSlot问题思考

文章目录 Flink执行图和TaskSlot问题思考 一、Flink执行图 二、TaskSlot问题思考 Flink执行图和TaskSlot问题思考 一、Flink执行图 Flink代码提交到集群执行时最终会被转换成task分布式的在各个节点上运行,在前面我们学习到DataFlow数据流图

智能座舱操作系统|Flyme Auto-魅族 Flyme Auto“上车”领克08,能帮助吉利汽车打赢智能座舱战吗

“没有手机软件赋能的汽车厂商都将逐渐掉队。” 3月30日晚,星际魅族集团董事长兼首席执行官沈子瑜在魅族领克无界生态发布会上直言,魅族Flyme Auto车机操作系统要让手机成为汽车的一部分,成为定义传统汽车五个域之外的第六域——手机域。 魅族Flyme Auto已经预热多时且备受…