【每日刷题】Day155
【每日刷题】Day155

🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
1. LCR 108. 单词接龙 - 力扣(LeetCode)
2. 675. 为高尔夫球比赛砍树 - 力扣(LeetCode)
3. LCR 107. 01矩阵 - 力扣(LeetCode)

1. LCR 108. 单词接龙 - 力扣(LeetCode)
//思路:本题与 Day154 中的 "最小基因变化" 完全一样
class Solution {
public:
string total = "abcdefghijklmnopqrstuvwxyz";
int ladderLength(string beginWord, string endWord, vector<string>& wordList)
{
unordered_set<string> hash(wordList.begin(),wordList.end());//标记字典中的单词
unordered_set<string> se;//标记已经出现过的单词
if(!hash.count(endWord)||beginWord==endWord) return 0;
queue<string> qu;
qu.push(beginWord);
se.insert(beginWord);
int ans = 0;
while(!qu.empty())
{
ans++;
int size = qu.size();
for(int i = 0;i<size;i++)
{
string s = qu.front();
for(int j = 0;j<s.size();j++)
{
for(int m = 0;m<26;m++)
{
string tmp = s;
if(tmp[j]==total[m]) continue;
tmp[j] = total[m];
if(tmp==endWord) return ans+1;
if(se.count(tmp)) continue;
se.insert(tmp);
if(hash.count(tmp)) qu.push(tmp);
}
}
qu.pop();
}
}
return 0;
}
};
2. 675. 为高尔夫球比赛砍树 - 力扣(LeetCode)
//思路:BFS+排序
//本题可以看作是 Day154 中 "迷宫中离入口最近的出口" 的升级版。
//仔细思考一下,本题要求我们从 (0,0)位置开始砍树,必须按照 由低到高 的顺序进行砍树,那我们首先第一步一定是先把数组中的所有树的高度按照升序排序,并且排序后我们还要保留其原本所在的坐标。
//排好序后,我们要从最低的树开始砍,砍完当前树需要去到下一个更高的树,因此这里我们实际上可以将砍树的动作看作为:从低的树的坐标,去到下一个更高的树的坐标;再从下一个更高的树的坐标,去到下下一个更更高的树的坐标 ...... ,以此类推。
//到这,本题实际上就是多次 从一个坐标去到另一个坐标 的操作,与 "迷宫中离入口最近的出口" 这题的思路就完全一样了。
class Solution {
public:
int n, m;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
int cutOffTree(vector<vector<int>>& forest)
{
n = forest.size(), m = forest[0].size();
int ans = 0;
vector<vector<int>> hash;//这里也可以用 pair,如果用pair后面 sort排序的时候就要自己写 lambda 表达式来排序,这里偷懒的方法就是用二维数组。
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (forest[i][j] > 1)
hash.push_back({forest[i][j],i,j});//0位置放值,也就是树的高度,1、2位置放坐标
sort(hash.begin(), hash.end());//排序时默认会按照数组第一个元素进行排序,这里刚好就是根据树的高度进行排序
int bx = 0, by = 0;//从 (0,0)位置开始
for (int i = 0; i < hash.size(); i++)
{
auto a = hash[i];
int ex = a[1], ey = a[2];//拿到下一个位置的坐标
int ret = bfs(forest, bx, by, ex, ey);//获得从 bx、by(初始位置)到达ex、ey(目标位置)所需的最少步数
if (ret == -1) return -1;//没法到达说明一定有至少一棵树没法砍掉,返回-1
ans += ret;
bx = ex, by = ey;//更新初始位置
}
return ans;
}
//下面的代码与 "迷宫中离入口最近的出口" 完全一样
int bfs(vector<vector<int>>& forest, int bx, int by, int ex, int ey)
{
if(bx==ex&&by==ey) return 0;
vector<vector<bool>> hash(n, vector<bool>(m));
queue<pair<int, int>> qu;
qu.push({bx,by});
hash[bx][by] = true;
int ret = 0;
while (!qu.empty())
{
ret++;
int size = qu.size();
while(size--)
{
auto a = qu.front();
qu.pop();
for (int j = 0; j < 4; j++)
{
int x = a.first + dx[j], y = a.second + dy[j];
if (x >= 0 && x < n && y >= 0 && y < m && !hash[x][y] && forest[x][y])
{
if (x == ex && y == ey) return ret;
qu.push({ x,y });
hash[x][y] = true;
}
}
}
}
return -1;
}
};
3. LCR 107. 01矩阵 - 力扣(LeetCode)
//思路:多源BFS
//多源BFS问题相较于单源BFS问题而言,区别仅仅在于:单源BFS初始只将一个起点放入队列向外扩展;多源BFS则是将所有起点同时放入队列进行向外扩展。
//本题我们要从逆向思维来考虑问题:题目让我们找到矩阵中所有位置的 1 到它最近的 0 的距离,并将距离与 1 替换。
//反向思考:我们将所有的 0 看作一个起点向外扩展,每次扩展到 1 时直接记录当前距离,一定是最短距离(因为每个 1 都一定有一个距离最近的 0 ,将所有 0 视为同一个起点同时向外扩展时,距离 某个 1 的某个 0一定先扩展到,因此每次的距离一定是最短的)
class Solution {
public:
int n,m;
int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};
vector<vector<int>> updateMatrix(vector<vector<int>>& mat)
{
n = mat.size(),m = mat[0].size();
vector<vector<bool>> hash(n,vector<bool>(m));
queue<vector<int>> qu;
for(int i = 0;i<n;i++)
for(int j = 0;j<m;j++)
if(!mat[i][j])
{
qu.push({i,j});//将所有 0 放入队列,视为一个起点,同时向外扩展
hash[i][j] = true;
}
int ret = 0;
while(!qu.empty())
{
ret++;
int size = qu.size();
while(size--)
{
auto arr = qu.front();
qu.pop();
for(int j = 0;j<4;j++)
{
int x = arr[0]+dx[j],y = arr[1]+dy[j];
if(x>=0&&x<n&&y>=0&&y<m&&!hash[x][y])
{
if(mat[x][y]) mat[x][y] = ret;//扩展到 1 时,此时的距离一定是最短的(因为此时一定是距离最近的 0 先扩展到 1)
qu.push({x,y});
hash[x][y] = true;
}
}
}
}
return mat;
}
};
相关文章:
【每日刷题】Day155
【每日刷题】Day155 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 108. 单词接龙 - 力扣(LeetCode) 2. 675. 为高尔夫球比赛砍树 - 力扣(…...
EXCEL延迟退休公式
如图: A B为手工输入 C2EOMONTH(A2,B2*12) D2EOMONTH(C2,IF(C2>DATEVALUE("2025-1-1"),INT((DATEDIF(DATEVALUE("2025-1-1"),C2,"m")4)/4),0)) E2EOMONTH(A2,B2*12IF(EOMONTH(A2,B2*12)>DATEVALUE("2025-1-1"),INT(…...
开源对象存储新选择:在Docker上部署MinIO并实现远程管理
文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…...
Spring Cloud生态圈
目录 Spring Cloud生态圈 核心组件 其他组件 总结 Spring Cloud Alibaba生态圈 核心组件 其他特性 Spring Cloud生态圈 Spring Cloud生态圈是一个为微服务架构提供全方位支持的解决方案集合。它涵盖了多个关键组件和服务,旨在帮助开发者快速构建、部署和管理…...
AI视觉小车基础--4.舵机控制(云台控制)
一、实验准备 控制连接在扩展板上的舵机。如下图所示,按键KEY1为板载元器件,所以不需要外接其他设备。 二、运行代码 # Import the Raspbot library import time from Raspbot_Lib import Raspbot from ipywidgets import interact import ipywidgets a…...
【Rust中的项目管理】
Rust中的项目管理 前言Package,Crate,Module &use ,Path通过代码示例解释 Crate,Module ,use,Path创建一个package:代码组织化skin.rs 中的代码struct & enum 相对路径和绝对路径引用同…...
【原创】如何备份和还原Ubuntu系统,非常详细!!
前言 我在虚拟机装了一个xfce4的Ubuntu桌面版,外加输入法、IDEA等,我想将这个虚拟机里的系统直接搬到物理机中,那我可以省的再重新装一遍、配置xfce4桌面、修改一堆快捷键还有配置idea了,那直接说干就干。 本教程基于Ubuntu24.0…...
成都栩熙酷网络科技抖音小店是真的
近年来,随着短视频平台的崛起,抖音小店作为一种新兴的购物模式,迅速吸引了大量消费者和商家的关注。在这一潮流中,成都栩熙酷网络科技有限公司(以下简称“栩熙酷”)凭借其敏锐的市场洞察力和强大的技术实力…...
Python 爬虫数据清洗与存储:基础教程
Python 爬虫数据清洗与存储:基础教程 在爬虫数据获取完成后,数据往往是“原始”的,不适合直接使用。清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤。本文将系统地介绍 Python 中进行数据清洗与存储的基本方法,帮助新手…...
ssm122基于Java的高校教学业绩信息管理系统+jsp(论文+源码)_kaic
毕 业 设 计(论 文) 题目:高校教学业绩信息管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本高校教学…...
Java 基础知识
一.泛型编程 1. 泛型的概念和作用是什么? 概念:泛型(Generics)是在 JDK 5.0 引入的新特性,允许在定义类、接口和方法时使用类型参数。类型参数在使用时被具体的类型替换。作用: 类型安全性:避…...
深入探索 React Hooks:原理、用法与性能优化全解
一、引言 在现代 React 开发领域,Hooks 已成为不可或缺的一部分,赋予函数组件强大功能,使其能胜任复杂任务。本文将全面剖析 React Hooks,助您深入理解并熟练运用。 二、React Hooks 是什么 (一)Hooks 出现的背景 早期 React 主要依赖类组件,其通过this.state管理状…...
python中父类和子类继承学习
python为啥要使用继承 1. **代码复用**:子类可以继承父类的方法和属性,避免了重复编写相同的代码,提高了代码的复用性。 2. **建立层次结构**:通过继承可以清晰地表示类之间的层次关系,使代码结构更有条理。 3. **扩展…...
Linux——GPIO输入输出裸机实验
学习了正点原子Linux环境下的GPIO的输入输出的裸机实验学习,现在进行一下小结: 启动文件start.S的编写 .global _start .global _bss_start _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:/*设置处理器进入SVC模式*/m…...
华为鸿蒙HarmonyOS NEXT升级HiCar:打造未来出行新体验
随着科技的不断进步,智能出行已成为我们生活中不可或缺的一部分。华为凭借其在智能科技领域的深厚积累,推出了全新的鸿蒙HarmonyOS NEXT系统,旨在为用户打造一个“人车家”的无缝协同出行体验。这一系统的核心亮点之一,就是其内置…...
【项目组件】第三方库——websocketpp
目录 第三方协议:websocket websocket简介 websocket特点 websocket协议切换 websocket协议格式段 websocketpp库介绍 endpoint server connection websocketpp库搭建服务器流程 基本框架实现 业务处理回调函数的实现 http_callback open_callback …...
计算机23级数据结构上机实验(第3-4周)
A 二叉树删除子树 编写程序对给定二叉树执行若干次删除子树操作,输出每次删除子树后剩余二叉树的中根序列。二叉树结点的数据域值为不等于0的整数。每次删除操作是在上一次删除操作后剩下的二叉树上执行。 输入格式: 输入第1行为一组用空格间隔的整数,表…...
【大数据学习 | HBASE高级】region split机制和策略
1. region split机制 HRegionServer拆分region的步骤是,先将该region下线,然后拆分,将其子region加入到hbase:meta表中,再将他们加入到原本的HRegionServer中,最后汇报Master。 split前:hbase:meta表有…...
flink实战 -- flink SQL 实现列转行
在 SQL 任务里面经常会遇到一列转多行的需求,下面就来总结一下在 Flink SQL 里面如何实现列转行的,先来看下面的一个具体案例. 需求 原始数据格式如下: namedatatest[{"content_type":"flink","url":"111"},{"content_type&quo…...
React中右击出现自定弹窗
前言 在react中点击右键,完成阻止浏览器的默认行为,完成自定义的悬浮框(Menu菜单). 版本 "react": "^18.2.0", "umijs/route-utils": "^4.0.1", "antd": "^5.18.1", "ant-design/pro-components": &q…...
快速完成一篇重复率和AI率都很低的英文论文!(亲测有效)
写英文论文对于很多同学来说比较困难,今天给大家分享一下如何快速完成一篇英文论文。 直接说操作方法: 一、打开任何一个AI工具,输入指令:我是英文专业的毕业生,我的论文题目是《XXXX》,论文正文8000字&a…...
终极全面战争模组制作指南:RPFM开源编辑器完全教程
终极全面战争模组制作指南:RPFM开源编辑器完全教程 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitcod…...
时间序列预测损失函数全解析:从MSE到分位数损失的选择指南
1. 项目概述:为什么时间序列预测的损失函数值得深究?做时间序列预测,无论是金融市场的股价波动、电商平台的销量起伏,还是工业设备的传感器读数,我们最终都要面对一个核心问题:如何衡量模型预测得好不好&am…...
SEO优化?你的网站要是还没学会这些方法就亏大了
说起来你可能不信,我刚接触SEO优化那会儿,差点把自家网站整成“数字废墟”。今天翻出那些踩过的坑,跟你唠唠怎么让搜索引擎爱上你的小破站。关键词研究:别再用脚趾头猜了你可能试过对着键盘一顿乱敲,把“最好”“第一”…...
给程序员和数据分析师的气象学入门:搞懂城市边界层,让你的天气API数据不再‘失真’
给程序员和数据分析师的气象学入门:搞懂城市边界层,让你的天气API数据不再‘失真’ 当你在调用天气API时,是否遇到过这样的困惑:明明获取的是同一个城市的温度数据,为什么市中心的气温总比郊区高出几度?为什…...
深入CanFestival源码:我是如何通过调试理解PDO映射与同步(SYNC)机制的
深入CanFestival源码:我是如何通过调试理解PDO映射与同步(SYNC)机制的 当你在工业控制项目中第一次遇到CANopen设备的PDO数据突然"消失",或是SYNC信号与数据流总差那么几毫秒时,就会明白协议栈源码层面的理解有多重要。去年在为某医…...
Steam Deck Tools 终极指南:让 Windows 掌机体验焕然一新
Steam Deck Tools 终极指南:让 Windows 掌机体验焕然一新 【免费下载链接】steam-deck-tools (Windows) Steam Deck Tools - Fan, Overlay, Power Control and Steam Controller for Windows 项目地址: https://gitcode.com/gh_mirrors/st/steam-deck-tools …...
用STM32F401的I2S接口驱动TM8211 DAC播放WAV音频,保姆级CubeMX配置教程
基于STM32F401的TM8211音频播放系统开发指南 1. 硬件系统搭建与原理分析 在开始CubeMX配置之前,我们需要先理解整个音频播放系统的硬件架构和工作原理。STM32F401通过I2S接口与TM8211 DAC芯片通信,将数字音频信号转换为模拟信号,最终驱动扬…...
MaterialSkin架构解析:现代化WinForms界面重构的技术实现
MaterialSkin架构解析:现代化WinForms界面重构的技术实现 【免费下载链接】MaterialSkin Theming .NET WinForms, C# or VB.Net, to Googles Material Design Principles. 项目地址: https://gitcode.com/gh_mirrors/mat/MaterialSkin MaterialSkin是一个专为…...
运维视角:用非Root用户安全部署KingbaseES数据库,附服务注册与状态检查命令
运维实战:以非Root用户安全部署KingbaseES数据库的完整指南 在企业的生产环境中,数据库作为核心数据存储组件,其部署安全性往往被许多运维团队忽视。传统教程中常见的"root用户直接安装"方式,实际上为企业埋下了严重的安…...
