力扣373场周赛题解
第一题:

这个题是一个简单题,数据范围也特别小,所以直接使用模拟方式暴力解答。
直接进行行移动的过程,然后检查移动后的结果是否与移动前相同。
代码:
public class Solution {// 将指定行循环右移k次private int[] rotateRow(int[] row, int k) {int[] rotatedRow = new int[row.length];for (int i = 0; i < row.length; i++) {rotatedRow[(i + k) % row.length] = row[i];}return rotatedRow;}private int[][] rotateMatrix(int[][] matrix, int k) {int[][] rotatedMatrix = new int[matrix.length][matrix[0].length];for (int i = 0; i < rotatedMatrix.length; i++) {if (i % 2 == 0) {rotatedMatrix[i] = rotateRow(matrix[i], k % matrix[i].length);} else {rotatedMatrix[i] = rotateRow(matrix[i], matrix[i].length - (k % matrix[i].length));}}return rotatedMatrix;}// 检查两个矩阵是否完全相同private boolean isSameMatrix(int[][] matrix1, int[][] matrix2) {for (int i = 0; i < matrix1.length; i++) {for (int j = 0; j < matrix1[0].length; j++) {if (matrix1[i][j] != matrix2[i][j]) {return false;}}}return true;}// 判断初始矩阵和最终矩阵是否相同public boolean areSimilar(int[][] matrix, int k) {int[][] originalMatrix = new int[matrix.length][matrix[0].length];for (int i = 0; i < matrix.length; i++) {originalMatrix[i] = matrix[i].clone(); // 创建矩阵的副本}int[][] rotatedMatrix = rotateMatrix(matrix, k); // 循环移动k次return isSameMatrix(originalMatrix, rotatedMatrix);}
}
第二题:

这个题目的思路也比较简单,主要就是两个方面进行考虑,一进行子字符串的截取,二判断子字符串是否是美丽字符串。子字符串的截取采用双指针进行解决,通过双指针的移动来不断截取子字符串然后,去判断当前截取的子字符串两种字符的数量是否满足规则。代码如下:
class Solution {public int beautifulSubstrings(String s, int k) {int count = 0;for (int i = 0; i < s.length(); i++) {int vowels = 0;int consonants = 0;for (int j = i; j < s.length(); j++) {char c = s.charAt(j);if (isVowel(c)) {vowels++;} else {consonants++;}if (vowels == consonants && (vowels * consonants) % k == 0) {count++;}}}return count;}private boolean isVowel(char c) {c = Character.toLowerCase(c);return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';}
}
第三题:

这个题目的思路是分组排序,把差距在limit的数字分为一组,每一组中的数据可以直接排序,然后把这个结果插入回原来的数组中,就得到结果。对于这个题目的解决思路就是先把所有元素进行排序然后记录原始的下标,然后通过limit来进行元素的分组。分好组后,针对每个分组的下标进行排序然后把最小的元素放在最小的下标。这样就得到了问题结果。
class Solution {public int[] lexicographicallySmallestArray(int[] nums, int limit) {int n = nums.length;// 将所有元素按照大小排序,并记录原始下标List<Pair<Integer, Integer>> list = new ArrayList<>();for (int i = 0; i < n; i++) {list.add(new Pair<>(nums[i], i));}list.sort((a, b) -> a.getKey() - b.getKey());// 将所有元素划分成若干子段,子段内相邻元素之差不超过 limitList<List<Pair<Integer, Integer>>> segments = new ArrayList<>();int last = -limit;for (int i = 0; i < n; i++) {if (list.get(i).getKey() - last > limit) {segments.add(new ArrayList<>());}segments.get(segments.size() - 1).add(list.get(i));last = list.get(i).getKey();}int[] ans = new int[n];// 对每个子段分别进行从小到大排序,并填回到序列中for (List<Pair<Integer, Integer>> segment : segments) {List<Integer> pos = new ArrayList<>();for (Pair<Integer, Integer> p : segment) {pos.add(p.getValue());}pos.sort(Comparator.naturalOrder());for (int i = 0; i < segment.size(); i++) {ans[pos.get(i)] = segment.get(i).getKey();}}return ans;}
}
相关文章:
力扣373场周赛题解
第一题: 这个题是一个简单题,数据范围也特别小,所以直接使用模拟方式暴力解答。 直接进行行移动的过程,然后检查移动后的结果是否与移动前相同。 代码: public class Solution {// 将指定行循环右移k次pri…...
编程语言发展史:Rust语言的出现和特点
一、Rust语言的出现 Rust语言是一种由Mozilla开发的系统级编程语言,该语言于2010年首次公布,由Graydon Hoare在Mozilla的工作期间开发,最初是为了替代C而设计的。Rust语言的目标是提供一种安全、高效、并发性强的编程语言,同时保…...
Centos Bind安装与排错
1.配置Centos系统静态IP vi/etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTOstaticIPADDR192.168.1.100NETMASK255.255.255.0GATEWAY192.168.1.1DNS18.8.8.8:wqsudo systemctl restart network.service 2.安装BIND(需要服务器连接互联网,如果服务…...
spark中write算子和format算子详解
在spark中,想要往数据库或者某sink路径里面写数据,存到外部存储系统,如文件系统、数据库或数据仓库,经常会用到write算子。 具体来说,write算子通常与DataFrame或Dataset API一起使用,用于将数据写入持久化…...
设计模式—接口隔离原则(ISP)
1.背景 2002 年罗伯特C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立…...
Jenkins用126邮箱发邮件为什么发不出去
1、检查 Jenkins Location中的邮件地址配置与发邮件的地址配置是否一致 Manage Jenkins -》 system 2、检查地址和端口号 3、检查邮箱的登录配置是否正确(这个地方的配置方式网上一抓一大把,自己搜一下就好) 4、126邮箱发邮件不需要勾选ssl协…...
怎么给数据库某个字段建立一个前缀索引
说明:SQL调优中重要的一个环节是建立索引,其中有一条是字段值过长字段应该建立前缀索引,即根据字段值的前几位建立索引,像数据库中的密码字段、UUID字段。 因为其随机性,其实根据前几位就可以锁定某一条记录了。前缀索…...
C# 图片下载工具类
写在前面 从浏览器的Html文本中获取图片链接并保存到本地,同时对图片的分辨率和品质进行处理,以满足某些平台的规格需求;可以放到多线程中调用以提高下载效率。 代码实现 public class ImageDownloader{private int minImageSize 1024 * 1…...
嵌入式硬件电路·电平
目录 1. 电平的概念 1.1 高电平 1.2 低电平 2. 电平的使用场景 2.1 高电平使能 2.2 低电平使能 2.3 失能 1. 电平的概念 电平是指电信号电压的大小或高低状态。在数字电子学中,电平有两种状态,高电平和低电平,用来表示二进制中…...
Python文件路径常用操作
1 文件路径 在进行数据处理时,经常要用代码去读文件里的数据,那么首先就得知道这个文件的文件路径。文件路径简单地说就是文件的存放位置。文件路径分为两块:文件夹路径和文件名,文件名又分为文件基本名和扩展名。 举例说明&…...
Redis-Redis 高并发分布式锁
集群分布式场景高并发 1.negix配置代理和路由 高并发场景超卖问题 1.使用原生redis控制超卖时(若是商品,则可以将商品id作为锁对象),会遇到的问题 问题一:若直接使用:将获取锁的对象和设置的超时的时间分开,则不能控…...
【推荐系统】MMOE笔记 20231126
paper阅读 任务差异带来的固有冲突实际上会损害至少某些任务的预测,特别是当模型参数在所有任务之间广泛共享时。(在说ESMM) 共享底层参数可以减少过拟合风险,但是会遇到任务差异引起的优化冲突,因为所有任务都需要在…...
4. 标准 IO 库
4. 标准 IO 库 1. 标准 IO 简介2. FILE 指针3. 标准输入、标准输出和标准错误4. fopen() 和 flose()5. fread() 和 fwrite()6. fseek 定位7. 检查或复位状态7.1 feof()7.2 ferrof()7.3 clearerr() 8. 格式化 IO8.1 格式化输出8. 2 格式化输入 9. IO 缓冲9.1 文件 IO 的内核缓冲…...
SAP Smartform小结
SAP系统做打印单据用的, 感觉很不好用, 特别是要嵌入韩文时必须使用嵌入的word编辑器,运行速度简直不可忍受. 见过一些Adobe interactive form的示例, 看着相当不错, 不过据说需要花money额外买licence, 哪有smartform这种免费东西来得实惠. 一般打印需求,会要求有标题抬头,打…...
KVM虚拟机的NAT网络模式原理及过程展示
NAT的方式及原理 NAT方式是KVM安装后的默认方式。 它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。 default是宿主机安装虚拟机支持模块的时候自动安装的。 其中 virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接…...
亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(一)
随着大语言模型效果明显提升,其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型(LLM)知识召回(Knowledge Retrieval)的方式,在私域知识问答方面可以很好的弥补通…...
C# MemoryCache的使用和封装
封装个缓存类,方便下次使用。 using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic;namespace Order.Core.API.Cache {public class GlobalCache C#有偿Q群:927860652{private static readonly MemoryCache …...
【nlp】4.2 nlp中标准数据集(GLUE数据集合中的dev.tsv 、test.tsv 、train.tsv)
nlp中标准数据集 1 GLUE数据集合介绍1.1 数据集合介绍1.2 数据集合路径2 GLUE子数据集的样式及其任务类型2.1 CoLA数据集文件样式2.2 SST-2数据集文件样式2.3 MRPC数据集文件样式2.4 STS-B数据集文件样式2.5 QQP数据集文件样式2.6 (MNLI/SNLI)数据集文件样式2.7 (QNLI/RTE/WNLI…...
Java LinkedList
LinkedList 一个双向链表。 本身是基于链表进行封装的列表, 所以具备了链表的特性: 变更简单, 容量是无限的, 不必像数组提前声明容量等。 同时 LinkedList 支持存储包括 null 在内的所有数据类型。 1 链表 了解 LinkedList 之前, 我们需要先了解一下双向链的特点 单链表, 双…...
【单片机学习笔记】STC8H1K08参考手册学习笔记
STC8H1K08参考手册学习笔记 STC8H系列芯片STC8H1K08开发环境串口烧录 STC8H系列芯片 STC8H 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的 8051 单片机,在相同的工作频率下,STC8H 系列单片机比传统的 8051约快12 倍速度…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
