Python算法练习 10.30

news/2025/2/14 1:49:14/

leetcode 841 钥匙和房间

有 n 个房间,房间按从 0 到 n - 1 编号。最初,除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。

当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。

给你一个数组 rooms 其中 rooms[i] 是你进入 i 号房间可以获得的钥匙集合。如果能进入 所有 房间返回 true,否则返回 false

示例 1:

输入:rooms = [[1],[2],[3],[]]
输出:true
解释:
我们从 0 号房间开始,拿到钥匙 1。
之后我们去 1 号房间,拿到钥匙 2。
然后我们去 2 号房间,拿到钥匙 3。
最后我们去了 3 号房间。
由于我们能够进入每个房间,我们返回 true。

示例 2:

输入:rooms = [[1,3],[3,0,1],[2],[0]]
输出:false
解释:我们不能进入 2 号房间。

自己写的无脑方法,当然是错的)

class Solution(object):def canVisitAllRooms(self, rooms):""":type rooms: List[List[int]]:rtype: bool"""flag_arr = [False] * len(rooms)flag_arr[0] = Truefor i in range(len(rooms)):for j in range(len(rooms[i])):if flag_arr[i]:flag_arr[rooms[i][j]] = Truefor i in range(len(flag_arr)):if not flag_arr[i]:return Falsereturn True

题解:

class Solution(object):def canVisitAllRooms(self, rooms):""":type rooms: List[List[int]]:rtype: bool"""def dfs(num):visited.add(num)for i in rooms[num]:if i not in visited:dfs(i)visited = set()n = len(rooms)dfs(0)return len(rooms) == len(visited)

 leetcode 547 省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

示例 1:

输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]
输出:2

示例 2:

输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]
输出:3

翻译:返回图中连通分量的个数

class Solution(object):def findCircleNum(self, isConnected):""":type isConnected: List[List[int]]:rtype: int"""def dfs(i):visited.add(i)for j in range(len(isConnected[i])):if isConnected[i][j] == 1 and j not in visited:dfs(j)cities = len(isConnected)provinces = 0visited = set()for i in range(cities):if i not in visited:dfs(i)provinces += 1return provinces

 


http://www.ppmy.cn/news/1186876.html

相关文章

解决连接Mysql出现ERROR 2013 (HY000): Lost connection to MySQL server at ‘waiting

在上一篇中解决Mysql ER_ACCESS_DENIED_ERROR: Access denied for user ‘root‘‘localhost‘ (using password: YES)-CSDN博客 写了mysql的密码报错问题,在执行 mysql -u root -p 出现了这个错误, 原因是:我在C:\Windows\System32\drive…

ES的概念和安装

ES是Elasticsearch的简称,是一个开源分布式搜索和分析引擎。它可以用于实时搜索、全文搜索和数据分析等任务。它是一个基于Lucene的搜索引擎,能够快速地处理大规模的结构化和非结构化数据。 ES的安装可以参考以下步骤: 下载ES安装包&#xf…

diamond大基因序列快速比对工具使用详解-包含超算集群多节点计算使用方法

Diamond是一款快速的序列比对工具,其使用方法如下: 1. 安装Diamond: 可从官方网站(https://github.com/bbuchfink/diamond/releases)下载安装包,并安装到本地电脑中。当然还有docker,conda以及…

人工智能AI 全栈体系(九)

第一章 神经网络是如何实现的 如何用神经网络处理不等长文本的方法? 八、循环神经网络(RNN: Recurrent Neural Network) 处理不等长文本的神经网络 – 循环神经网络 RNN。 1. 从句子理解说起 上次讲了用词向量表示词,一句话也…

识别flink的反压源头

背景 flink中最常见的问题就是反压,这种情况下我们要正确的识别导致反压的真正的源头,本文就简单看下如何正确识别反压的源头 反压的源头 首先我们必须意识到现实中轻微的反压是没有必要去优化的,因为这种情况下是由于偶尔的流量峰值,Task…

lcd1602切换屏幕程序

要在LCD1602显示屏上切换屏幕内容&#xff0c;您需要使用一个微控制器&#xff08;如Arduino&#xff09;以及适当的LCD库。以下是一个示例程序&#xff0c;使用Arduino和LiquidCrystal库来切换LCD1602显示不同的屏幕内容&#xff1a; #include <LiquidCrystal.h> Liquid…

点击空白处弹出框取消

新建click-outside.js文件 const clickoutsideContext clickoutsideContextexport default {/*param el 指令所绑定的元素param binding {Object} param vnode vue编译生成的虚拟节点*/bind(el, binding, vnode) {const documentHandler function(e) {if (!vnode.context ||…

8.3 矢量图层点要素单一符号使用四

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染填充标记&#xff08;Filled marker&#xff09;QGis代码实现 总结 前言 上一篇教程介绍了矢量图层点要素单一符号中椭圆形标记&#xff08;Ellipse marker&#xff09;和字符标记&#xff08;Font marker&…