当前位置: 首页 > news >正文

LeetCode 第381场周赛个人题解

目录

100191. 输入单词需要的最少按键次数 I

原题链接

题目描述

思路分析

AC代码

100188. 按距离统计房屋对数目 I

原题链接

题目描述

思路分析

AC代码

100192. 输入单词需要的最少按键次数 II

原题链接

题目描述

思路分析

AC代码

100213. 按距离统计房屋对数目 II

原题链接

题目描述

思路分析

AC代码


100191. 输入单词需要的最少按键次数 I

原题链接

输入单词需要的最少按键次数 I - 力扣 (LeetCode) 竞赛

题目描述

给你一个字符串 word,由 不同 小写英文字母组成。

电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 ["a","b","c"],我们需要按一次键来输入 "a",按两次键来输入 "b",按三次键来输入 "c"

现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。

返回重新映射按键后输入 word 所需的 最少 按键次数。

下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1*# 和 0  对应任何字母。

思路分析

贪心的映射,出现次数越多的字符映射的按键次数少

记录每个字符出现次数,然后升序排序,出现次数最多的前八个字符都映射到按键1次,次8个映射到按2次,再8个映射到3次,剩下的映射到4次

时间复杂度:O(n + UlogU) 空间复杂度:O(U + UlogU),U为字符集大小

第三题思路和代码和本题一样

AC代码

class Solution {
public:int minimumPushes(string word) {int cnt[26]{0} , ret = 0;for(auto x : word) cnt[x - 'a']++;sort(cnt,cnt+26);return accumulate(cnt + 18 , cnt + 26 , 0) + accumulate(cnt + 10 , cnt + 18 , 0) * 2 + accumulate(cnt + 2 , cnt + 10 , 0) * 3 + accumulate(cnt , cnt + 2 , 0) * 4;       }
};

100188. 按距离统计房屋对数目 I

原题链接

100188. 按距离统计房屋对数目 I - 力扣(LeetCode)

题目描述

给你三个 正整数 n 、x 和 y 。

在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。

对于每个 k1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。

返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。

注意x 与 y 可以 相等 

思路分析

由于floyd太好写了,直接无脑Floyd求最短路,然后遍历加上路径为k的就行,

时间复杂度:O(n^3) 空间复杂度:O(n^2)

当然,这个代码肯定过不了第四题

AC代码

class Solution {
public:long long g[101][101];vector<int> countOfPairs(int n, int x, int y) {memset(g,0x3f,sizeof(g));g[x][y] = g[y][x] = 1;for(int i = 1 ; i <= n - 1 ; i++)g[i][i + 1] = g[i + 1][i] = 1 , g[i][i] = 0;g[n][n] = 0;for(int k = 1 ; k <= n ; k++)for(int i = 1 ; i <= n ; i++)for(int j = 1 ; j <= n ; j++)if(g[i][j] - g[i][k] > g[k][j])g[i][j] = g[i][k] + g[k][j];vector<int> ret(n);for(int k = 1 ; k <= n ; k++)for(int i = 1 ; i <= n ; i++)for(int j = 1 ; j <= n ; j++)if(g[i][j] == k)ret[k - 1]++;return ret;}
};

100192. 输入单词需要的最少按键次数 II

原题链接

100192. 输入单词需要的最少按键次数 II - 力扣(LeetCode)

题目描述

给你一个字符串 word,由 不同 小写英文字母组成。

电话键盘上的按键与 不同 小写英文字母集合相映射,可以通过按压按键来组成单词。例如,按键 2 对应 ["a","b","c"],我们需要按一次键来输入 "a",按两次键来输入 "b",按三次键来输入 "c"

现在允许你将编号为 2 到 9 的按键重新映射到 不同 字母集合。每个按键可以映射到 任意数量 的字母,但每个字母 必须 恰好 映射到 一个 按键上。你需要找到输入字符串 word 所需的 最少 按键次数。

返回重新映射按键后输入 word 所需的 最少 按键次数。

下面给出了一种电话键盘上字母到按键的映射作为示例。注意 1*# 和 0  对应任何字母。

思路分析

见第二题

AC代码

class Solution {
public:int minimumPushes(string word) {int cnt[26]{0} , ret = 0;for(auto x : word) cnt[x - 'a']++;sort(cnt,cnt+26);return accumulate(cnt + 18 , cnt + 26 , 0) + accumulate(cnt + 10 , cnt + 18 , 0) * 2 + accumulate(cnt + 2 , cnt + 10 , 0) * 3 + accumulate(cnt , cnt + 2 , 0) * 4;       }
};

100213. 按距离统计房屋对数目 II

原题链接

按距离统计房屋对数目 II - 力扣 (LeetCode) 竞赛

题目描述

给你三个 正整数 n 、x 和 y 。

在城市中,存在编号从 1 到 n 的房屋,由 n 条街道相连。对所有 1 <= i < n ,都存在一条街道连接编号为 i 的房屋与编号为 i + 1 的房屋。另存在一条街道连接编号为 x 的房屋与编号为 y 的房屋。

对于每个 k1 <= k <= n),你需要找出所有满足要求的 房屋对 [house1, house2] ,即从 house1 到 house2 需要经过的 最少 街道数为 k 。

返回一个下标从 1 开始且长度为 n 的数组 result ,其中 result[k] 表示所有满足要求的房屋对的数量,即从一个房屋到另一个房屋需要经过的 最少 街道数为 k 。

注意x 与 y 可以 相等 

思路分析

树状数组,区间维护

代码很长主要是树状数组占一部分,然后情况特判占一部分

基本思路是我们计算每个点对于距离1~n的贡献,然后累加即可。

假如没有(x,y)这条边,那么点1对1~n-1都有1点贡献,点2对1~n-2都有1点贡献……

现在加上了(x,y)之后,会对某些点之间的最短距离产生影响

我们不妨假设x < y(有些样例x > y,需要处理)

  1. 如果y - x <= 1
    1. 则点对之间的最短距离无影响,直接按照没有(x,y)这条边去做即可
  2. 如果y - x > 1
    1. 令mid = (y + x + 1) / 2 , 那么(x,y)的影响分为为:
      1. 对x以及x左边的点来说,他们到达mid的距离不变,到达[mid , n]的距离变短
      2. 对[x,y]内的部分点i来说,令m = (i + y + i - x + 2) / 2,他们到达[i , m - 1]内的点的距离不变,到达[m , y]和y右侧的点的距离变短
      3. 对于剩下的点,到达右侧点的距离不变

这里单独说一下2.1.2中m的取法,2.1.2讨论的部分点都是走左边捷径到达区间内某些点距离变短的点,m就可以看成把y向右延长i - x + 1后取得i到右边新边界这段区间上得中点

我们维护树状数组,然后求贡献即可

由于我们只计算每个点到其右边点的贡献,所以最终答案要乘2

按照这个方法,代码很容易写错,主要在于m下标的取法,可以画图理解一下

时间复杂度:O(nlogn) 空间复杂度:O(n)

AC代码

long long t[100010];
int n;
void update(int x, int k)
{for (; x <= n; x += x & -x)t[x] += k;
}int query(int x)
{int sum = 0;for (; x > 0; x &= (x - 1))sum += t[x];return sum;
}inline void change(int l , int r , int k)
{if(l > r) return;update(l , k) , update(r + 1 , -k);
}class Solution {
public:vector<long long> countOfPairs(int N, int x, int y) {memset(t,0,sizeof(t));n = N;vector<long long> ret(n);if(x > y) swap(x,y);if(y - x <= 1){for(int i = 1 ; i < n ; i++)change(1 , n - i , 1);for(int i = 1 ; i <= n ; i++)ret[i - 1] = query(i) * 2; return ret;}int mid = (y + x + 1) / 2;for(int i = 1 ; i <= x ; i++){change(1 , mid - i , 1) , change(x - i + 1 , x - i + y - mid , 1);if(y < n)change(x - i + 2 , x - i + n - y + 1 , 1);}int i = x + 1;for(i = x + 1 ; i <= n ; i++){int m = (i + y + i - x + 2) / 2;if(m > y)break;change(1 , m - 1 - i , 1) , change(i - x + 1 , i - x + 1 + y - m , 1);if(y < n)change(i - x + 2 , i - x + 1 + n - y , 1);}for( ; i <= n ; i++)change(1 , n - i , 1);for(int i = 1 ; i <= n ; i++)ret[i - 1] = query(i) * 2;return ret;}
};

相关文章:

LeetCode 第381场周赛个人题解

目录 100191. 输入单词需要的最少按键次数 I 原题链接 题目描述 思路分析 AC代码 100188. 按距离统计房屋对数目 I 原题链接 题目描述 思路分析 AC代码 100192. 输入单词需要的最少按键次数 II 原题链接 题目描述 思路分析 AC代码 100213. 按距离统计房屋对数目…...

数据结构之二叉树的性质与存储结构

数据结构之二叉树的性质与存储结构 1、二叉树的性质2、二叉树的存储结构 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;…...

机器视觉检测设备在连接器外观缺陷检测中的应用

作为传输电流或信号连接两个有源器件的器件&#xff0c;连接器被广泛应用于各个行业&#xff0c;从手机、平板、电脑&#xff0c;到冰箱、空调、洗衣机&#xff0c;再到汽车、国防、航空&#xff0c;处处是它的所在。每个电子产品少了连接器将无法运作&#xff0c;因此&#xf…...

ChatGPT vs 文心一言(AI助手全面比较)

随着人工智能的不断发展&#xff0c;ChatGPT&#xff08;OpenAI&#xff09;和文心一言都代表了当前先进的自然语言处理技术。它们在智能回复、语言准确性和知识库丰富度等方面都有各自的优势。在下面的比较中&#xff0c;我们将从多个角度探讨这两个AI助手&#xff0c;帮助你更…...

MSPM0L1306例程学习-UART部分(2)

MSPM0L1306例程学习系列 1.背景介绍 写在前边的话&#xff1a; 这个系列比较简单&#xff0c;主要是围绕TI官网给出的SDK例程进行讲解和注释。并没有针对模块的具体使用方法进行描述。所有的例程均来自MSPM0 SDK的安装包&#xff0c;具体可到官网下载并安装: https://www.ti…...

Baichuan2百川模型部署的bug汇总

1.4bit的量化版本最好不要在Windows系统中运行&#xff0c;大概原因报错原因是bitsandbytes不支持window&#xff0c;bitsandbytes-windows目前仅支持8bit量化。 2. 报错原因是机器没有足够的内存和显存&#xff0c;offload_folder设置一个文件夹来保存那些离线加载到硬盘的权…...

ChatGPT 如何解决 “Something went wrong. lf this issue persists ….” 错误

Something went wrong. If this issue persists please contact us through our help center at help.openai.com. ChatGPT经常用着用着就出现 “Something went wrong” 错误&#xff0c;不管是普通账号还是Plus账号&#xff0c;不管是切换到哪个节点&#xff0c;没聊两次就报…...

怎么移除WordPress后台工具栏的查看站点子菜单?如何改为一级菜单?

默认情况下&#xff0c;我们在WordPress后台想要访问前端网站&#xff0c;需要将鼠标移动到左上角的站点名称&#xff0c;然后点击下拉菜单中的“查看站点”才行&#xff0c;而且还不是新窗口打开。那么有没有办法将这个“查看站点”子菜单变成一级菜单并显示在顶部管理工具栏中…...

WEB-前端 表格标签-合并单元格

目录 合并单元方式 &#xff1a; 跨行合并 &#xff1a; 跨列合并 &#xff1a; 目标单元格 : 跨行的话 跨列的话 合并的步骤 : 跨行合并 &#xff1a; 跨列合并 &#xff1a; 特殊情况下&#xff0c;可以把多个单元格合并为一个单元格&#xff0c;我们呢先…...

[计算机网络]基本概念

目录 1.ip地址和端口号 1.1IP地址 1.2端口号 2.认识协议 2.1概念&#xff1a; 2.2知名协议的默认端口 3.五元组 4.协议分层 4.1分层的作用 4.2OSI七层模型 4.3TCP/IP五层&#xff08;四层&#xff09;模型 ​编辑4.4网络设备对应的分层&#xff1a; ​编辑以下为跨…...

Flutter 综述

Flutter 综述 1 介绍1.1 概述1.2 重要节点1.3 移动开发中三种跨平台框架技术对比1.4 flutter 技术栈1.5 IDE1.6 Dart 语言1.7 应用1.8 框架 2 Flutter的主要组成部分3 资料书籍 《Flutter实战第二版》Dart 语言官网Flutter中文开发者社区flutter 官网 4 搭建Flutter开发环境参考…...

Pixels:重新定义游戏体验的区块链农场游戏

数据源&#xff1a;Pixels Dashboard 作者&#xff1a;lesleyfootprint.network 最近&#xff0c;Pixels 通过从 Polygon 转移到 Sky Mavis 旗下的 Ronin 网络&#xff0c;完成了一次战略性的转变。 Pixels 每日交易量 Pixels 在 Ronin 网络上的受欢迎程度急剧上升&#xf…...

【JavaEE】文件操作 —— IO

文件操作 —— IO 1. 文件的属性 文件内容文件大小文件路径文件名称 2. 文件的管理 采用树形结构进行管理。 3. 文件路径 分为两种&#xff1a;相对、绝对路径。 相对路径&#xff1a;相对于当前位置的路径&#xff0c;以“./xxx.xxx”为标志绝对路径&#xff1a;以从盘符…...

推荐新版AI智能聊天系统网站源码ChatGPT NineAi

Nine AI.ChatGPT是基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代…...

学生公寓智能控电系统的重要性

学生公寓智能控电系统石家庄光大远通电气有限公司学生宿舍内漏电&#xff0c;超负荷用电&#xff0c;违规用电等现象一直是困扰后勤管理的普遍问题。随着学生日常生活方式以及生活用品的改变&#xff0c;电脑以及各种电器逐渐的普及&#xff0c;导致用电量与日俱增&#xff0c;…...

使用Scrapy 爬取“http://tuijian.hao123.com/”网页中左上角“娱乐”、“体育”、“财经”、“科技”、历史等名称和URL

一、网页信息 二、检查网页&#xff0c;找出目标内容 三、根据网页格式写正常爬虫代码 from bs4 import BeautifulSoup import requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/53…...

2018年认证杯SPSSPRO杯数学建模D题(第二阶段)投篮的最佳出手点全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 D题 投篮的最佳出手点 原题再现&#xff1a; 影响投篮命中率的因素不仅仅有出手角度、球感、出手速度&#xff0c;还有出手点的选择。规范的投篮动作包含两膝微屈、重心落在两脚掌上、下肢蹬地发力、身体随之向前上方伸展、同时抬肘向投篮方向…...

软件资源管理下载系统全新带勋章功能 + Uniapp前端

测试环境&#xff1a;php7.1。ng1.2&#xff0c;MySQL 5.6 常见问题&#xff1a; 配置好登录后转圈圈&#xff0c;检查环境及伪静态以及后台创建好应用 上传图片不了&#xff0c;检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图&#xff0c;在前端uitl文件…...

高性能前端UI库 SolidJS | 超棒 NPM 库

SolidJS是一个声明式的、高效的、编译时优化的JavaScript库&#xff0c;用于构建用户界面。它的核心特点是让你能够编写的代码既接近原生JavaScript&#xff0c;又能够享受到现代响应式框架提供的便利。 SolidJS的设计哲学强调了性能与简洁性。它不使用虚拟DOM&#xff08;Vir…...

聊聊PowerJob的AliOssService

序 本文主要研究一下PowerJob的AliOssService DFsService tech/powerjob/server/extension/dfs/DFsService.java public interface DFsService {/*** 存储文件* param storeRequest 存储请求* throws IOException 异常*/void store(StoreRequest storeRequest) throws IOEx…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...