Leetcode 第 362 场周赛题解
Leetcode 第 362 场周赛题解
- Leetcode 第 362 场周赛题解
- 题目1:2848. 与车相交的点
- 思路
- 代码
- 复杂度分析
- 题目2:2849. 判断能否在给定时间到达单元格
- 思路
- 代码
- 复杂度分析
- 题目3:2850. 将石头分散到网格图的最少移动次数
- 思路
- 代码
- 复杂度分析
- 题目4:2851. 字符串转换
- 思路
- 代码
- 复杂度分析
Leetcode 第 362 场周赛题解
题目1:2848. 与车相交的点
思路
哈希。
代码
/** @lc app=leetcode.cn id=2848 lang=cpp** [2848] 与车相交的点*/// @lc code=start
class Solution
{
public:int numberOfPoints(vector<vector<int>> &nums){vector<bool> seat(101, false);for (const vector<int> &num : nums){int start = num[0], end = num[1];for (int i = start; i <= end; i++)seat[i] = true;}int count = 0;for (int i = 1; i <= 100; i++)if (seat[i])count++;return count;}
};
// @lc code=end
复杂度分析
时间复杂度:O(n),其中 n 为数组 nums 的长度。
空间复杂度:O(L),辅助数组的长度,据题意 L = 100。
题目2:2849. 判断能否在给定时间到达单元格
思路
脑筋急转弯。
带点贪心的思想。
代码
class Solution
{
public:bool isReachableAtTime(int sx, int sy, int fx, int fy, int t){if (t == 1 && sx == fx && sy == fy)return false;return abs(sx - fx) <= t && abs(sy - fy) <= t;}
};
复杂度分析
时间复杂度:O(1)。
空间复杂度:O(1),没有辅助变量。
题目3:2850. 将石头分散到网格图的最少移动次数
思路
暴力列举全排列,每次计算出一个曼哈顿距离,更新最小值即为最小移动次数。
代码
/** @lc app=leetcode.cn id=2850 lang=cpp** [2850] 将石头分散到网格图的最少移动次数*/// @lc code=start
class Solution
{
public:int minimumMoves(vector<vector<int>> &grid){int m = grid.size(), n = m ? grid[0].size() : 0; // m = n = 3// 所有移走的石子个数 = 所有移入的石子个数(grid[i][j] = 0)vector<pair<int, int>> from; // 移走石子坐标数组vector<pair<int, int>> to; // 移入石子坐标数组// 构建 from 和 to 数组for (int i = 0; i < 3; i++)for (int j = 0; j < 3; j++){if (grid[i][j] > 1){// 有 grid[i][j] - 1 个可以移走的石子for (int k = 0; k < grid[i][j] - 1; k++)from.push_back(make_pair(i, j));}else if (grid[i][j] == 0)to.push_back(make_pair(i, j));}// 枚举 from 的全部排列可能,与 to 匹配,求 from[i] 和 to[i] 的曼哈顿距离之和,最小值即为答案int minCount = __INT_MAX__; // 最少移动次数// 使用 next_permutation 枚举全排列必须先对数组进行排序sort(from.begin(), from.end());do{int count = 0;for (int i = 0; i < from.size(); i++){// 计算曼哈顿距离count += abs(from[i].first - to[i].first) + abs(from[i].second - to[i].second);}minCount = min(minCount, count); // 更新答案} while (next_permutation(from.begin(), from.end()));return minCount;}
};
// @lc code=end
复杂度分析
时间复杂度:O(m×n×(m×n)!),使用 STL 函数 next_permutation 进行全排列的时间复杂度为O((m×n)!),循环内计算单次计算曼哈顿距离的时间复杂度为O(m×n),其中 m、n 分别为矩阵 gird 的长度和宽度,m = n = 3。
空间复杂度:O(mn),为辅助数组 from 和 to 的空间,其中 m、n 分别为矩阵 gird 的长度和宽度,m = n = 3。
题目4:2851. 字符串转换
超出能力范围。
思路
矩阵快速幂优化 DP(矩阵快速幂 + 动态规划 + KMP)
视频讲解:
https://www.bilibili.com/video/BV1U34y1N7Pe/?vd_source=df165d34990cd0aa2cacb2c452e99aad
代码
/** @lc app=leetcode.cn id=2851 lang=cpp** [2851] 字符串转换*/// @lc code=start// 矩阵快速幂优化 DPclass Solution
{
public:int numberOfWays(string s, string t, long long k){int n = s.size();int c = kmp_search(s + s.substr(0, n - 1), t);vector<vector<long long>> m = {{c - 1, c},{n - c, n - 1 - c}};m = pow(m, k);return m[0][s != t];}private:// KMP 模板vector<int> calc_max_match(string s){vector<int> match(s.size());int c = 0;for (int i = 1; i < s.size(); i++){char v = s[i];while (c && s[c] != v)c = match[c - 1];if (s[c] == v)c++;match[i] = c;}return match;}// KMP 模板// 返回 text 中出现了多少次 pattern(允许 pattern 重叠)int kmp_search(string text, string pattern){vector<int> match = calc_max_match(pattern);int match_cnt = 0, c = 0;for (int i = 0; i < text.size(); i++){char v = text[i];while (c && pattern[c] != v)c = match[c - 1];if (pattern[c] == v)c++;if (c == pattern.size()){match_cnt++;c = match[c - 1];}}return match_cnt;}const long long MOD = 1e9 + 7;// 矩阵乘法vector<vector<long long>> multiply(vector<vector<long long>> &a, vector<vector<long long>> &b){vector<vector<long long>> c(2, vector<long long>(2));for (int i = 0; i < 2; i++)for (int j = 0; j < 2; j++)c[i][j] = (a[i][0] * b[0][j] + a[i][1] * b[1][j]) % MOD;return c;}// 矩阵快速幂vector<vector<long long>> pow(vector<vector<long long>> &a, long long n){vector<vector<long long>> res = {{1, 0}, {0, 1}};for (; n; n /= 2){if (n % 2)res = multiply(res, a);a = multiply(a, a);}return res;}
};
// @lc code=end
复杂度分析
时间复杂度:O(n+logk),其中 n 为字符串 s 的长度。
空间复杂度:O(n),其中 n 为字符串 s 的长度。
相关文章:
Leetcode 第 362 场周赛题解
Leetcode 第 362 场周赛题解 Leetcode 第 362 场周赛题解题目1:2848. 与车相交的点思路代码复杂度分析 题目2:2849. 判断能否在给定时间到达单元格思路代码复杂度分析 题目3:2850. 将石头分散到网格图的最少移动次数思路代码复杂度分析 题目4…...
蓝桥杯官网练习题(0的个数)
问题描述 给定一个正整数 n ,请问 n 的十进制表示中末尾总共有几个 0 ? 输入格式 输入一行包含一个正整数 n。 输出格式 输出一个整数,表示答案。 样例输入 20220000样例输出 4评测用例规模与约定 对于所有评测用例,1 &l…...
计算线段上距离线段外某一点最近的点
一、问题 已知 p 0 = ( x 0 , y 0 ) p_0=(x_0, y_0) p...
港联证券股票分析:经济拐点显现 积极提升仓位
港联证券指出,商场底部上升的方向不变,当时稳增加和活跃资本商场的活跃方针仍在持续落地,一起也看到了一些经济数据边沿企稳的迹象,跟着方针作用的进一步闪现,商场情绪有望持续好转,上市公司基本面也有望得…...
不同的图像质量评价指标(IQA)
一、NR-IQA 这是一种方法不是指标 “Non-Reference Image Quality Assessment”(NR-IQA)是一种图像质量评价(Image Quality Assessment, IQA)方法,通常用于评估图像的质量,而无需使用参考图像(…...
linux命令-tar 命令
tar 命令 tar 命令一般用来打包文件 ,文件夹 , 方便传输使用. tar命令是在Linux和UNIX系统上用于创建、查看和提取tar归档文件的工具。它通常与gzip一起使用,以便在创建归档文件时进行压缩或解压缩。 -c: 创建归档文件 -x: 提取文件 -z: 告诉 tar 命令使用 gzip …...
selenium元素定位---ElementClickInterceptedException(元素点击交互异常)解决方法
1、异常原因 在编写ui自动化时,执行报错元素无法点击:ElementClickInterceptedException 具体报错:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class"el-c…...
05_css选择器的使用
一、css选择器的类型 1、标签选择器 用法:直接写 写标签名:标签名{} 示例: <!-- <!DOCTYPE html --> <html><head><meta charset"utf-8"><title>标签选择器</title><style type"te…...
跨平台游戏引擎 Axmol-2.0.0 正式发布
下载 https://github.com/axmolengine/axmol/releases/tag/v2.0.0 更新日志 添加实验性的 WebAssembly 构建支持(WebGL 2.0),由 nowasm 贡献 已知问题 WebGL context lost 尚未处理 部署在 github pages 的 demo 可快速预览,注意:由于 Git…...
面试总结归纳
面试总结 注:循序渐进,由点到面,从技术点的理解到项目中的使用, 要让面试官知道,我所知道的要比面试官更多 一、Mybatis 为ORM半持久层框架,它封装了JDBC,开发时只需要关注sql语句就可以了…...
【刷题篇】贪心算法(一)
文章目录 分割平衡字符串买卖股票的最佳时机Ⅱ跳跃游戏钱币找零 分割平衡字符串 class Solution { public:int balancedStringSplit(string s) {int lens.size();int cnt0;int balance0;for(int i0;i<len;i){if(s[i]R){balance--;}else{balance;}if(balance0){cnt;}}return …...
从维基百科通过关键字爬取指定文本内容
通过输入搜索的关键字,和搜索页数范围,爬出指定文本内内容并存入到txt文档。代码逐行讲解。 使用re、res、BeautifulSoup包读取,代码已测,可以运行。txt文档内容不乱码。 import re import requests from bs4 import BeautifulS…...
pytorch代码实现之SAConv卷积
SAConv卷积 SAConv卷积模块是一种精度更高、速度更快的“即插即用”卷积,目前很多方法被提出用于降低模型冗余、加速模型推理速度,然而这些方法往往关注于消除不重要的滤波器或构建高效计算单元,反而忽略了特征内部的模式冗余。 原文地址&am…...
一文解析-通过实例讲解 Linux 内存泄漏检测方法
一、mtrace分析内存泄露 mtrace(memory trace),是 GNU Glibc 自带的内存问题检测工具,它可以用来协助定位内存泄露问题。它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数 void mtrace ()&#x…...
Spring Boot常用的参数验证技巧和使用方法
简介 Spring Boot是一个使用Java编写的开源框架,用于快速构建基于Spring的应用程序。在实际开发中,经常需要对输入参数进行验证,以确保数据的完整性和准确性。Spring Boot提供了多种方式来进行参数验证,并且可以很方便地集成到应…...
手机+卫星的科技狂想
最近硬件圈最火热的话题之一,应该就是突然上线、遥遥领先的华为Mate 60 Pro了。 其中,CPU和类5G网速是怎么实现的,是大家特别关注的问题。相比之下,卫星通话这个功能,讨论度就略低一些(没有说不火的意思&am…...
便捷查询中通快递,详细物流信息轻松获取
在如今快节奏的生活中,快递已成为人们生活中不可或缺的一部分。然而,快递查询却常常让人头疼,因为需要分别在不同的快递公司官网上进行查询,耗费时间和精力。为了解决这个问题,固乔科技推出了一款便捷的快递查询助手&a…...
ARM接口编程—Interrupt(exynos 4412平台)
CPU与硬件的交互方式 轮询 CPU执行程序时不断地询问硬件是否需要其服务,若需要则给予其服务,若不需要一段时间后再次询问,周而复始中断 CPU执行程序时若硬件需要其服务,对应的硬件给CPU发送中断信号,CPU接收到中断信号…...
适用于Linux的Windows子系统(PHP搭建lmap、redis、swoole环境)
目录 前言 一、Windows安装Linux子系统 二、Ubuntu搭建PHP开发环境 1.PHP 安装 2.Apache2 安装 3.MySQL安装 4.Redis安装 5.Swoole安装 总结 前言 系列分为三章(从安装到项目使用): 一、适用于Linux的Windows子系统(系统安装步骤…...
Vue3+Ts+Vite项目(第十二篇)——echarts安装与使用,vue3项目echarts组件封装
概述 技术栈:Vue3 Ts Vite Echarts 简介: 图文详解,教你如何在Vue3项目中引入Echarts,封装Echarts组件,并实现常用Echarts图例 文章目录 概述一、先看效果1.1 静态效果1.2 动态效果 二、话不多数,引入 …...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
