[LeetCode周赛复盘] 第 322 场周赛20221204

news2024/9/22 1:19:02

[LeetCode周赛复盘] 第 322 场周赛20221204

    • 一、本周周赛总结
    • 二、 [Easy] 6253. 回环句
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium] 6254. 划分技能点相等的团队
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 6255. 两个城市间路径的最小分数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 6256. 将节点分成尽可能多的组
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 打得不好。
  • T2 相向双指针。
  • T3 dfs。
  • T4 dfs判断二分图+暴力 bfs找深度。
    在这里插入图片描述

二、 [Easy] 6253. 回环句

链接: 6253. 回环句

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

3. 代码实现

class Solution:
    def isCircularSentence(self, sentence: str) -> bool:
        s = sentence.split()
        if s[-1][-1] != s[0][0]:
            return False 
        for i in range(len(s)-1):
            if s[i][-1] != s[i+1][0]:
                return False
        return True

三、[Medium] 6254. 划分技能点相等的团队

链接: 6254. 划分技能点相等的团队

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 结论是显然的:只有大的组合小的才能平均划分。
  • 因此排序后头结合尾巴即可。

3. 代码实现

class Solution:
    def dividePlayers(self, skill: List[int]) -> int:
        skill.sort()
        n = len(skill)
        l,r = 0,n-1
        s = skill[l] + skill[r]
        
        ans = 0
        while l<r:
            if skill[l] + skill[r] != s:
                return -1
            ans += skill[l]* skill[r]
            l += 1
            r -= 1
        return ans

四、[Medium] 6255. 两个城市间路径的最小分数

链接: 6255. 两个城市间路径的最小分数

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 这题wa两次。
  • 题意说的比较反常规,由于可以折返/重复走,实际是求连通1节点的所有边的最小值。
  • 由于我们的vis是存的已访问的点,而不是边。因此要在vis之前更新边,因为这个边要访问下看看。

  • 赛中我第一次wa是没提前访问边。
  • 第二次tle是因为vis变成了存边,但没存双向边。

3. 代码实现

class Solution:
    def minScore(self, n: int, roads: List[List[int]]) -> int:
        g = [[] for _ in range(n)]
        for u,v,w in roads:
            u -= 1
            v -= 1
            g[u].append((v,w))
            g[v].append((u,w))
        
        vis = [0]*n 
        ans = inf
        def dfs(u):
            vis[u] = 1
            nonlocal ans
            for v,w in g[u]:
                ans = min(ans,w)
                if not vis[v]:
                    dfs(v)
        dfs(0)
        return ans

五、[Hard] 6256. 将节点分成尽可能多的组

链接: 6256. 将节点分成尽可能多的组

1. 题目描述

在这里插入图片描述

2. 思路分析

比赛时没做出来,赛后默写灵神的题解。
实际上就是两个模板,但不先找出规律,做出推论,也是想不到的。
  • 手玩一下,先想树,发现树一定是有解的,因为向下延伸时分组+1即可,即层号。
  • 那么图(比树多了有环)什么情况下行什么情况下不行呢,显然问题出在环上。
  • 观察下,如果环长是偶数就有解,奇数则无解;因为偶数的话,从一个点往两边出发,一定可以同时到最远的点。
  • 得出推论:图中有奇环,则无解;其他情况,有解。
  • 没有奇环的图=二分图,因此可以用dfs染色模板判断这个图是不是二分图。
  • 染色的同时给图按连通分量分组,对每个连通块里求最大层深,即:枚举每个点作为起点,求层深取max,这里其实就是n方暴力。
  • 把每块的最大层深加起来,就是答案。每个连通块之间互不干扰。

3. 代码实现

class Solution:
    def magnificentSets(self, n: int, edges: List[List[int]]) -> int:
        """ 推论:   如果是树/森林,有答案
                    如果有奇环,无答案。
            没有奇环=二分图,因此
                用dfs判断是否是二分图
                用bfs枚举一个连通块中的每个点作为起点,给其它块染色最多染几组出来,即求连通块最大深度
        """
        g = [[] for _ in range(n)]
        for u,v in edges:
            g[u-1].append(v-1)
            g[v-1].append(u-1)
        
        colors = [0]*n
        def dfs(u,c):  # 判断是否是二分图
            colors[u] = c
            nodes.append(u)
            for v in g[u]:
                if colors[v] == c or not colors[v] and not dfs(v,3-c):  # 注意这个染色是标记1/2
                    return False                 
            return True

        vis = [-1]*n 
        def bfs(start):  # 以start为起点,计算这个连通分量的深度,用时间戳来优化vis,类似匈牙利的vis,这里由于每个点只会作为起点一次,所以可以用start            
            q = deque([start])
            vis[start] = start
            depth = 0
            while q:
                depth += 1
                for _ in range(len(q)):
                    u = q.popleft()
                    for v in g[u]:
                        if vis[v] != start:
                            vis[v] = start
                            q.append(v)
            return depth
                
        ans = 0        
        for i,c in enumerate(colors):  # 染色1/2是分组,0是未访问
            if not c:
                nodes = []  # 当前连通块的所有点
                if not dfs(i,1):  # 如果不是二分图,无答案
                    return -1
                ans += max(bfs(x) for x in nodes)  # 枚举一个连通块中每个起点,找最大深度
        return ans             

六、参考链接

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

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

相关文章

细粒度图像分类论文研读-2017

文章目录Higher-order Integration of Hierarchical Convolutional Activations for Fine-grained Visual Categorization(by end-to-end feature encoding)AbstractIntroduction关于核关于多尺度Kernelized convolutional activationsMatching kernel and polynomial predicto…

秒懂数据结构之Map _ Set ,竟如此简单

Map、Set 文章目录 前言一、Map、Set的初步理解二、Map、Set的CURD方法的实现三、Map、Set的遍历总结前言 Set和Map天然就是高效搜索/查找的语义在这里我为什么将这两个集合分别列举比较呢&#xff1f;希望通过我的这篇博客可以增进大家对Map和Set的认识&#xff01;一、Map、…

[附源码]Python计算机毕业设计Django汽车美容店管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计算卫星高度角、方位角

最小二乘定权、电离层对流层改正&#xff0c;都需要卫星的高度角、方位角。本章将介绍求解完卫星的地固坐标系的位置后&#xff0c;如何求解卫星的高度角、方位角。 卫星位置求解请参考之前的博客&#xff1a;卫星位置解算原理与程序设计 参考书籍&#xff1a;黄丁发&#xff0…

读<算法图解><笔记摘录>

从很多途径当中,看到过这本书的知识点,是一本很有趣的算法入门书籍,最近花费了几天的时间将其阅读完,总想着总结一下这本书的算法知识点,分享给大家,也让自己掌握地更加踏实一点. 算法:一组完成任何任务的指令 算法这玩意,在保证满足条件,并且不浪费内存的情况下,要尽可能速度…

18.定位元素练习-淘宝网

注意&#xff1a; 如果一个盒子定位元素属性既有left又有right,则会执行left属性。 既有top又有bottom&#xff0c;会执行top <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compa…

五子棋游戏AI智能算法设计

五子棋游戏C语言AI智能算法设计 近来发现编制五子棋游戏很有趣&#xff0c;尤其是AI智能算法很烧脑。网上介绍有什么贪心算法&#xff0c;剪枝算法&#xff0c;博弈树算法等等&#xff0c;不一而足。 对于人机对战的电脑智能应子算法&#xff0c;参阅很多五子棋书籍棋谱和五…

有序Map集合:LinkedHashMap和TreeMap该如何选用

文章目录前言一、为什么HashMap是无序的二、LinkedHashMap如何保证有序性三、TreeMap的底层原理四、LinkedHashMap和TreeMap比较总结前言 为什么HashMap是无序的&#xff1f;有序的Map集合有哪些&#xff1f;LinkedHashMap和TreeMap都是有序的Map集合&#xff0c;他们有什么区…

智能优化算法期末复习(更新ing)

目录 一、GA遗传算法 二、ACO蚁群算法 三、PSO粒子群算法 四、SA模拟退火算法 五、ABC人工蜂群算法 六、综合 一、GA遗传算法 1.运算流程 2.遗传算法适应值分配策略&#xff08;基于目标函数的直接分配、基于排名的分配&#xff09; 3.遗传算法在二进制问题&#xff08;如0…

Windows OpenGL ES 图像绿幕抠图

目录 一.OpenGL ES 图像绿幕抠图 1.原始图片2.效果演示 二.OpenGL ES 图像绿幕抠图源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础…

Java开发必须掌握的运维知识 (十)-- Docker集群自动化部署管理:Kubernetes快速入门

一、什么是Kubernetes Kubernetes(K8S)是Google在2014年发布的一个开源项目&#xff0c;用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作&#xff0c;并且整合多个运行着docker容器的主机集群。 Kubernetes官网地址 二、Kubernetes相关特性 …

JavaWeb_第3章_HTTPTomcatServlet

JavaWeb_第3章_HTTP&Tomcat&Servlet 文章目录JavaWeb_第3章_HTTP&Tomcat&Servlet1&#xff0c;Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排2, HT…

vue中,页面布局之使用vue-splitpane实现窗格的拆分和调节,类似于flex布局

vue中&#xff0c;页面布局之使用vue-splitpane实现窗格的拆分和调节&#xff0c;类似于flex布局 1、基本介绍 npm地址&#xff1a;https://www.npmjs.com/package/vue-splitpane 安包 npm install vue-splitpane注册 main.js import splitPane from vue-splitpane // 注…

土豆清洗去皮机设计

目 录 摘 要 I Abstract II 1绪论 1 1.1选题背景及意义 1 1.2国内外研究现状 1 1.2.1国内外现状 2 1.2.2国外研究现状 2 1.3 发展趋势 3 1.4研究内容及方法 4 2毛刷式土豆清洗去皮机总体设计 5 2.1毛刷式土豆清洗去皮机的构造及工作原理 5 2.2 土豆擦皮机的相关计算 6 2.2.1设计…

动手学深度学习(1)—— 基础知识

文章目录一、基本概念1.1 关键组件数据模型目标函数优化算法1.2 各种机器学习问题监督学习无监督学习强化学习1.3 神经网络的特点二、预备知识2.1 数据操作入门运算符广播机制索引和切片节省内存转换为其他python 对象2.2 数据预处理读取数据集处理缺失的数据2.3 线性代数标量向…

WPS通过“文档部件”的“域”设置图、表和公式的自动序列号

写文档时&#xff0c;当有多张图片、多个表格和多个公式需要编号时&#xff0c;可以通过设置自动序列号&#xff0c;实现一定程度的自动编号和任意位置插入后随时更新序号。具体操作如下 ​ 1. 图的设置 在WPS中&#xff0c;首先设置好一张图片的格式后&#xff0c;对于需要设…

【并发】J.U.C线程池

线程池 经历了Java内存模型、JUC基础之AQS、CAS、Lock、并发工具类、并发容器、阻塞队列、atomic类后&#xff0c;我们开始JUC的最后一部分&#xff1a;线程池。 线程池的优势 为什么多线程会带来性能问题 多线程的性能问题&#xff0c;分为两类&#xff0c;一类是线程本身…

从今天起真正释放创造力——亚马逊云科技re:Invent

对于开发者而言&#xff0c;成就感来自于每一次敲下代码后可实现的创造力&#xff0c;而不是把时间和精力消耗在写千篇一律又无法复用的“胶水”代码&#xff0c;或是在越来越复杂的软件栈面前&#xff0c;疲惫地写业务流程并尽量减少Bug。更加不堪的是&#xff0c;有时仅仅是因…

2022.12.4 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.方法5.实验5.1 数据集5.2 网络模型5.3 实验表现6.展望深度学习1.LSTM原理1.1 什么是LSTM&#xff1f;1.2 遗忘门&#xff08;forget gate&#xff09;1.3 输入门&#xff08;input gate&#xff09;1.4 输出门&#xff08;output gate…

Python声明式统计可视化库 altair-GitHub鉴赏官

推荐理由&#xff1a;Vega-Altair是 Python 的声明式统计可视化库。借助 Vega-Altair&#xff0c;您可以花更多时间来理解数据及其含义。Vega-Altair 的 API 简单、友好且一致&#xff0c;建立在强大的 Vega-Lite JSON 规范之上。这种优雅的简单性可以用最少的代码产生漂亮而有…