Leetcode 第 410 场周赛题解

Leetcode 第 410 场周赛题解

  • Leetcode 第 410 场周赛题解
    • 题目1:3248. 矩阵中的蛇
      • 思路
      • 代码
      • 复杂度分析
    • 题目2:3249. 统计好节点的数目
      • 思路
      • 代码
      • 复杂度分析
    • 题目3:3250. 单调数组对的数目 I
      • 思路
      • 代码
      • 复杂度分析
    • 题目4:3251. 单调数组对的数目 II
      • 思路
      • 代码
      • 复杂度分析

Leetcode 第 410 场周赛题解

题目1:3248. 矩阵中的蛇

思路

遍历字符串数组 commands,模拟🐍的移动过程。

如果最后🐍的位置为 (i, j),则编号为 (i * n) + j。

代码

/** @lc app=leetcode.cn id=3248 lang=cpp** [3248] 矩阵中的蛇*/// @lc code=start
class Solution
{
public:int finalPositionOfSnake(int n, vector<string> &commands){int i = 0, j = 0;for (string &cmd : commands){switch (cmd[0]){case 'U':i--;break;case 'R':j++;break;case 'D':i++;break;case 'L':j--;break;default:break;}}return (i * n) + j;}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是字符串数组 commands 的长度。

空间复杂度:O(1)。

题目2:3249. 统计好节点的数目

思路

建树,然后从根节点 0 开始 DFS 这棵树。

DFS 返回子树大小。

对于节点 x,如果其是叶子节点,或者其所有儿子子树大小都一样,那么答案加一。

代码

/** @lc app=leetcode.cn id=3249 lang=cpp** [3249] 统计好节点的数目*/// @lc code=start
class Solution
{
public:int countGoodNodes(vector<vector<int>> &edges){int n = edges.size() + 1; // 节点数// 构建邻接表vector<vector<int>> adj(n);for (vector<int> &edge : edges){int u = edge[0], v = edge[1];adj[u].push_back(v);adj[v].push_back(u);}int ans = 0;// parent 为父节点function<int(int, int)> dfs = [&](int u, int parent) -> int{int cnt_sum = 1; // 节点总数,先计入自身int single_cnt = 0;bool valid = true;for (int v : adj[u]){// 规避邻接点中已访问过的父节点,不需要 visited 数组if (v == parent)continue;int cnt = dfs(v, u);cnt_sum += cnt;// 检测子树的节点数量是否相同if (single_cnt == 0)single_cnt = cnt;else if (single_cnt != cnt)valid = false;}ans += valid;return cnt_sum;};dfs(0, -1); // -1 即不存在父节点return ans;}
};
// @lc code=end

复杂度分析

时间复杂度:O(n),其中 n 是数组 edges 的长度。

空间复杂度:O(n),其中 n 是数组 edges 的长度。

题目3:3250. 单调数组对的数目 I

思路

题目输入一个数组nums。

假设有两个数组A和B,A递增,B递减,且 Ai + Bi = numsi

问有多少对(A,B)数组对。

解法:

在这里插入图片描述

代码

#
# @lc app=leetcode.cn id=3250 lang=python3
#
# [3250] 单调数组对的数目 I
## @lc code=start# 记忆化搜索class Solution:def countOfPairs(self, nums: List[int]) -> int:MOD = 10 ** 9 + 7n = len(nums)@cachedef dfs(i, a):if i == n - 1:return 1res = 0b = nums[i] - afor na in range(nums[i + 1] + 1):nb = nums[i + 1] - naif a <= na and b >= nb:res += dfs(i + 1, na)return res % MODres = 0for num in range(nums[0] + 1):res += dfs(0, num)res %= MODreturn res
# @lc code=end

复杂度分析

时间复杂度:O(n * m2),其中 n 是数组 nums 的长度。

空间复杂度:O(n * m),其中 n 是数组 nums 的长度。

题目4:3251. 单调数组对的数目 II

思路

设 f[i][j] 表示下标 0 到 i 中的单调数组对的个数,且 arr1[i]=j。

在这里插入图片描述

代码

/** @lc app=leetcode.cn id=3251 lang=cpp** [3251] 单调数组对的数目 II*/// @lc code=start
class Solution
{
private:const int MOD = 1e9 + 7;public:int countOfPairs(vector<int> &nums){int n = nums.size();int m = *max_element(nums.begin(), nums.end());vector<vector<long long>> dp(n, vector<long long>(m + 1));vector<long long> preSum(m + 1);fill(dp[0].begin(), dp[0].begin() + nums[0] + 1, 1);for (int i = 1; i < n; i++){partial_sum(dp[i - 1].begin(), dp[i - 1].end(), preSum.begin()); // dp[i-1] 的前缀和for (int j = 0; j <= nums[i]; j++){int max_k = j + min(nums[i - 1] - nums[i], 0);dp[i][j] = max_k >= 0 ? preSum[max_k] % MOD : 0;}}return accumulate(dp[n - 1].begin(), dp[n - 1].begin() + nums[n - 1] + 1, 0LL) % MOD;}
};
// @lc code=end

复杂度分析

时间复杂度:O(n * m),其中 n 是数组 nums 的长度,m=max(nums)。

空间复杂度:O(n * m),其中 n 是数组 nums 的长度,m=max(nums)。

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

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

相关文章

结构型设计模式—组合模式

结构型设计模式—组合模式 欢迎长按图片加好友&#xff0c;我会第一时间和你分享持续更多的开发知识&#xff0c;面试资源&#xff0c;学习方法等等。 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示…

网络安全服务基础Windows--第15节-CA与HTTPS理论

公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称 PKI&#xff09;是指⼀套由硬件、软件、⼈员、策略和程序组成的系统&#xff0c;⽤于创建、管理、分发、使⽤、存储和撤销数字证书。PKI 的核⼼⽬的是通过使⽤公钥加密技术来确保电⼦通信的安全性。PKI 为数…

Linux之grep命令

在文本文件中过滤&#xff0c;包含指定字符串的行 – grep [选项] 字符串 文本文件...• 常用命令选项 – -v&#xff0c;取反匹配 – -i&#xff0c;忽略大小写 ]# grep root /etc/passwd #包含root的行 ]# grep -v root /etc/passwd #不包含root ]# grep ROOT…

数据库中的“加速器”:深度解析索引的重要性及最佳实践

文章目录 **为什么要使用索引&#xff1f;****索引的作用&#xff1a;** **索引的分类****1. 按索引字段的个数分类****2. 按照索引值的唯一性分类** **如何定义索引&#xff1f;****1. 创建索引****语句中的关键要素&#xff1a;****创建索引的示例&#xff1a;** **2. 删除索…

【保姆级教程】使用 PyTorch 自定义卷积神经网络(CNN) 实现图像分类、训练验证、预测全流程【附数据集与源码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

Android Camera系列(二):TextureView+Camera

两岸猿声啼不住&#xff0c;轻舟已过万重山—李白 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLS…

设计模式学习-简单的命令模式例子

上一章节介绍过了命令模式&#xff0c;这一篇文章就简单的做一个小案例来巩固学习 搭建场景 简单的搭建一个场景就行 &#xff0c;随便准备一个物体放在场景中位置Reset一下即可。 代码编写 定义接口&#xff08;或者抽象类&#xff09;ICommand 用来规范Command的行为。注意…

SpringCloud开发实战(三):集成Eureka注册中心

目录 SpringCloud开发实战&#xff08;一&#xff09;&#xff1a;搭建SpringCloud框架 SpringCloud开发实战&#xff08;二&#xff09;&#xff1a;通过RestTemplate实现远程调用 Eureka简介 Eureka 是一个基于 Java 的开源技术&#xff0c;最广为人知的是作为 Netflix 开发…

Java 输入与输出之 NIO.2【AIO】【Path、Paths、Files】【walkFileTree接口】探索之【三】

在JDK 1.7 版本中对NIO进行了完善&#xff0c;推出了NIO.2&#xff0c;也称为AIO&#xff08;异步IO&#xff09;&#xff0c;在处理大量并发请求时具有优势&#xff0c;特别是在网络编程和高并发场景下&#xff0c;表现得更为出色。 对于输出流和输入流而言&#xff0c;操作的…

【GIS开发小课堂】vue3+Cesium.js三维WebGIS项目实战(一)

随着市场对数字孪生的需求日益增多&#xff0c;对于前端从业者的能力从对框架vue、react的要求&#xff0c;逐步扩展到2D、3D空间的交互&#xff0c;为用户提供更紧密的立体交互。近年来前端对GIS的需求日益增多。 本文档详细介绍了使用Vue3和Cesium.js构建三维WebGIS项目的步骤…

024集—— 正则表达式、replace、DateTime日期的用法——C#学习笔记

DateTime 是一个struct结构体。 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {internal class Program{static void Main(string[] args){args new s…

神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?

本文将介绍&#xff0c;ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。 客户遇到的问题 ClkLog的用户访问基础统计分析功能是基于神策SDK的全埋点来实现的。 我们遇到有些客户是使用C、C#等语言来开发的客户端&#xff0c;然而神策此类SDK&#xff08;如C, C…

psql常见报错解决

问题 解决 要在管理员模式下启动 pg_ctl start -D "D:\Program\PostgreSQL\data" 注册成服务 D:\Program\PostgreSQL\bin\pg_ctl.exe register -N "postgresql" -D "D:\Program\PostgreSQL\data" -U "postgres" -P "postgre…

守护夏日清凉:EasyCVR+AI视频智能管理方案为水上乐园安全保驾护航

随着夏季的来临&#xff0c;水上乐园成为了人们避暑消夏、亲子互动的理想去处。然而&#xff0c;随着游客量的激增&#xff0c;如何确保水上乐园的安全与秩序&#xff0c;提升游客体验&#xff0c;成为了管理者亟待解决的问题。为此&#xff0c;引入一套高效、智能的视频监控方…

workman和GateWay学习笔记

前言 workman支持Udp GateWay是基于workman的二次封装&#xff0c;更适合长链接场景 windows安装workman composer create-project workerman/webman windows运行workman cd webman php windows.php windows访问 http://ip地址:8787 将workman引入thinkphp框架理念

OZON户外运动产品有哪些好卖的

Top1 运动水壶 Спортивная бутылка 780 мл 商品id&#xff1a;1613789852 月销量&#xff1a;819 OZON热销文具产品&#xff1a;m6z.cn/5H6fQR (复制浏览器打开) 780毫升的容量设计&#xff0c;既不会过于笨重&#xff0c;也能满足用户在运动或户外活…

【自动驾驶】决策规划算法 | 数学基础(二)凸优化与非凸优化

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

初识Linux · 有关makefile

目录 前言&#xff1a; 1 makefile的简单使用 2 makefile介绍 前言&#xff1a; 我们上文介绍了gcc和g的基本使用&#xff0c;带了许多的子指令&#xff0c;但是有的时候啊&#xff0c;一个一个敲指令确实有点麻烦了&#xff0c;此时&#xff0c;一个工具就能派上用场&…

Linux学习-虚拟化平台安装和使用

注&#xff1a;系统使用Rock8.6 下载链接 通过百度网盘分享的文件&#xff1a;cirros.qcow2&#xff0c;node_base.xml等2个文件 链接&#xff1a;https://pan.baidu.com/s/1hupGQsMjrXMgngCy3lQLhw?pwdhlr6 提取码&#xff1a;hlr6[rootharbor ~]# cat /etc/redhat-releas…

Django+Vue宠物服务管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…