力扣每日练习(3.18)补

200. 岛屿数量

岛屿是指上下左右都是被0包起来的。使用递归的方式,也就是深度优先搜索,需要确定终止条件,也就是badcase是什么情况出现的。
二叉树是递到叶子节点的时候,因为下面是空子树了;矩阵就是越界,元素坐标不在这个矩阵里了,结合本题还要包括元素进海了。
**解题思路:**从左到右、从上到下依次遍历元素,对于每个元素,检查是否是陆地;如果是,那么就递归检查上下左右有没有陆地,这样就能找到该岛屿的所有部分,并且将其标记为已走过,这样根据岛屿的其中一个元素(最先被遍历到)就得到了这个岛屿存在,并且不会再重复计数。

class Solution:def numIslands(self, grid: List[List[str]]) -> int:# 判断空值情况if not grid: return 0# 初始化矩阵长宽rows, cols = len(grid), len(grid[0])# 初始化岛屿数量num = 0# 递归函数def dfs(r,c):# 如果走错了,返回空if r<0 or c<0 or r>=rows or c>=cols or grid[r][c]!='1':return # 走到的,标记为走过grid[r][c] = '2'# 四处走走dfs(r-1, c) # 上dfs(r+1, c) # 下dfs(r, c-1) # 左dfs(r, c+1) # 右# 从左到右,从上到下,依次走过每个坐标for r in range(rows):for c in range(cols):# 如果当前是陆地,就递归遍历if grid[r][c] == '1':dfs(r,c)num += 1return num

695. 岛屿的最大面积

跟上一题类似,但是要维护一个全局变量——最大的岛屿面积。在每次递归,我们都计数,累加遍历到的1的次数。这样就每次遍历岛屿得到岛屿的面积,不断比较,得到最终结果。

class Solution:def maxAreaOfIsland(self, grid: List[List[int]]) -> int:if not grid: return 0# 初始化rows, cols = len(grid), len(grid[0])max_area = 0def dfs(r, c):if r<0 or c<0 or r>=rows or c>=cols or grid[r][c]!=1: return 0# 当前为1,计数temp = 1 grid[r][c] = 2 # 修改走过的# 检查相邻的temp += dfs(r-1,c)temp += dfs(r+1,c)temp += dfs(r,c-1)temp += dfs(r,c+1)return temp# 从左到右,从上到下,依次走过每个坐标for r in range(rows):for c in range(cols):# 如果当前是陆地,就递归遍历if grid[r][c] == 1:max_area = max(dfs(r,c), max_area)return max_area

129. 求根节点到叶节点数字之和

每条路径的值都是上一层的结果10后加当前节点的值,因此递归主体可以确定为当前路径值10+当前节点值。
在遇到叶子节点时,就应该返回当前路径值。
如果不是叶子节点,需要往左右子树继续递归。
寻找到所有可能的路径和,加起来。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def sumNumbers(self, root: Optional[TreeNode]) -> int:if not root: return 0# 递归,如果当前节点为空,则返回0def dfs(node, num):if not node:return 0# 不为空,则加上父节点的数*10num = num*10 + node.val# 如果左右子树均为空,则返回到该节点的总和if not node.left and not node.right: return num# 否则继续递归return dfs(node.left, num) + dfs(node.right, num)# 从根节点开始return dfs(root, 0)

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

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

相关文章

基于BusyBox的imx6ull移植sqlite3到ARM板子上

1.官网下载源码 https://www.sqlite.org/download.html 下载源码解压到本地的linux环境下 2.解压并创建install文件夹 3.使用命令行配置 在解压的文件夹下打开终端&#xff0c;然后输入以下内容&#xff0c;其中arm-linux-gnueabihf是自己的交叉编译器【自己替换】 ./config…

PyTorch 深度学习(GPT 重译)(三)

六、使用神经网络拟合数据 本章内容包括 与线性模型相比&#xff0c;非线性激活函数是关键区别 使用 PyTorch 的nn模块 使用神经网络解决线性拟合问题 到目前为止&#xff0c;我们已经仔细研究了线性模型如何学习以及如何在 PyTorch 中实现这一点。我们专注于一个非常简单…

获取蓝牙Download_Linkey日志方法

::获取root权限 del bt_config.conf :retry adb root if %errorlevel% neq 0 ( echo adb root failed. Retrying... goto retry ) echo Congratulations To Adb Root For His Success.... :adb_pull adb pull /data/misc/bluedroid/bt_config.conf if %errorlevel% neq…

拷贝他人maven仓库jar包到自己本地仓库,加载maven依然提示无法下载对应依赖

所遇问题&#xff1a; 拷贝他人maven仓库jar包到自己本地maven仓库repository下的对应依赖位置&#xff0c;重新加载idea的maven依然提示无法下载对应依赖。 解决办法&#xff1a; 在maven->repository找到对应报错依赖路径&#xff0c;删除xxx.repositories 和 xxx.lastU…

websocket 中 request-line 中的URI编码问题

首先&#xff0c;request-line组成如下&#xff1a; Request-Line Method SP Request-URI SP HTTP-Version CRLF 在 rfc6455 规范的 5.1.2 Request-URI 中&#xff0c;有这样的描述&#xff1a; The Request-URI is transmitted in the format specified in section 3.2.1. …

【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结

【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结 模糊图像增强技术之去噪声类滤波场景应用小结—【蘇小沐】 文章目录 【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结&#xff08;一&#xff09;去噪声类滤波器1、去块滤波器&#xff08;Deblo…

不同“chatGPT”比较

通过两个问题比较不同版本的 生成式 AI 国内免费: 【通义千问】https://tongyi.aliyun.com/qianwen 【文心一言】https://yiyan.baidu.com 【豆包】https://www.doubao.com/chat 【360 智脑】https://chat.360.com/chat 归属主体&#xff1a; 【阿里-通义千问-免费-国内可访…

32.768K晶振X1A000141000300适用于无人驾驶汽车电子设备

科技的发展带动电子元器件的发展电子元器件-“晶振”为现代的科技带来了巨大的贡献&#xff0c;用小小的身体发挥着大大的能量。 近两年无人驾驶汽车热度很高&#xff0c;不少汽车巨头都已入局。但这项技术的难度不小&#xff0c;相信在未来几年里&#xff0c;无人驾驶汽车这项…

webpack从零开始搭建vue项目

webpack一步一步搭建vue项目 前提&#xff1a;node、git(可选)已安装。node我使用的版本是 16.13.1。本文基本上都是基础配置&#xff0c;更多特殊配置请看其他博客。 本项目包含内容&#xff1a; webapck vue sass postcss babel eslint typescript 项目源码地址&#xff1…

软考高级:软件架构风格-独立构件风格概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

MySQL 索引的分类和优化

​ 优质博文&#xff1a;IT-BLOG-CN 索引是什么 &#xff1a; MySQL 官方对索引的定义&#xff1a;索引&#xff08;Index&#xff09;是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质&#xff1a;索引是数据结构。索引的目的在于提高查询效率。可以简单理解为&#…

力扣爆刷第101天之hot100五连刷91-95

力扣爆刷第101天之hot100五连刷91-95 文章目录 力扣爆刷第101天之hot100五连刷91-95一、62. 不同路径二、64. 最小路径和三、5. 最长回文子串四、1143. 最长公共子序列五、72. 编辑距离 一、62. 不同路径 题目链接&#xff1a;https://leetcode.cn/problems/unique-paths/desc…

实现防抖函数并支持第一次立刻执行(vue3 + ts环境演示)

1、先看一效果&#xff1a; 2、实现思路&#xff1a; 使用定时器setTimeout和闭包实现常规防抖功能&#xff1b;增加immediate字段控制第一次是否执行一次函数&#xff08;true or false&#xff09;&#xff1b;增加一个flag标识&#xff0c;在第一次执行时&#xff0c;将标…

【go从入门到精通】for循环控制

前言 Go 语言提供了 for 循环语句&#xff0c;用于重复执行一段程序逻辑&#xff0c;直到循环条件不再满足时终止。 循环可以用于迭代各种数据结构&#xff08;例如切片、数组、映射或字符串&#xff09;中的元素 本文将很基础的for循环语法&#xff0c;循环嵌套&#…

二、阅读器的开发(初始)-- 1、阅读器简介及开发准备工作

1、阅读器工作原理及开发流程 1.1阅读器工作原理简介 电子书&#xff08;有txt、pdf、epub、mobi等格式&#xff09;->解析&#xff08;书名、作者、目录、封面、章节等&#xff09;->&#xff08;通过阅读器引擎&#xff09;渲染 -> 功能&#xff08;字号、背景色、…

PHP页面如何实现设置独立访问密码

PHP网页如果需要查看信息必须输入密码&#xff0c;验证后才可显示出内容的代码如何实现&#xff1f; 对某些php页面设置单独的访问密码,如果密码不正确则无法查看内容,相当于对页面进行了一个加密。 如何实现这个效果&#xff0c;详细教程可以参考&#xff1a;PHP页面如何实现…

谁将主导未来AI市场?Claude3、Gemini、Sora与GPT-4的技术比拼

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

Milvus笔记

一、创建操作 1、python版本 from pymilvus import Collection, FieldSchema, DataType, CollectionSchema, connections from pymilvus.orm import utility, dbfrom knowledge_brain.milvus_sink import milvus_sink from study.connect import Connectclass MilvusOperatC:…

前后端分离项目springsecurity实现用户登录认证快速使用

目录 1、引入依赖 2、创建类继承WebSecurityConfigurerAdapter &#xff08;1&#xff09;重写里面的configure(HttpSecurity http)方法 &#xff08;2&#xff09;重写AuthenticationManager authenticationManagerBean() &#xff08;3&#xff09;密码加密工具 3、继承…

k8s kubectl 常用命令

查询节点node kubectl get node查询节点标签 kubectl get node --show-labels查询所有pod kubectl get pod -A查询指定命名空间下的pod kubectl get pod -n project-3428查询pod详细 kubectl -n project-3428 get pod xxxxxxxxxxxx -o widePOD打标签 kubectl label pod my…