力扣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;}
}

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

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

相关文章

6.前端--CSS-基础选择器【2023.11.26】

1.CSS基本选择器 标签选择器&#xff1a; 标签选择器&#xff08;元素选择器&#xff09;是指用 HTML 标签名称作为选择器&#xff0c;按标签名称分类&#xff0c;为页面中某一类标签指定统一的 CSS 样式。标签选择器可以把某一类标签全部选择出来&#xff0c;比如所有的 <…

Android控件全解手册 - 实现弹出式圆环菜单

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列

ns-3安装教程

1️⃣ VMware安装Ubuntu虚拟机 VMware安装Ubuntu 18.04虚拟机 6.桥接模式网络配置往后都不看 VMware16 安装Ubuntu22.04.1 服务器版操作系统教程 这块主要看怎么从清华镜像下载ubuntu 本人安装的是ubuntu22.04.3 2️⃣ 安装ns3 【ns-3】零基础安装教程 安装依赖库时遇到了问题 …

Bun 1.0 正式发布,爆火的前端运行时,速度遥遥领先!

目录 Bun Github 41.6k 另外&#xff0c;Bun.js 原生支持了数百个 Node.js 和 Web API&#xff0c;包括约 90% 的 Node-API 函数(fs、path、Buffer 等)。 一、包子1.0Bun 1.0终于来了。 二、Bun 是一个一体化工具包 为什么包子存在 Bun 的目标很简单&#xff1a;消除缓慢…

现货黄金区间交易的两个要点

在现货黄金市场中&#xff0c;我们常碰到横盘区间行情。有区间&#xff0c;就终究会出现突破&#xff0c;因为金价不可能缺乏方向而一直在区间内运行。那既然要突破&#xff0c;我们又应当如何应对和交易呢&#xff1f;下面我们就来讨论一下。 切忌在突破发生时马上跟随突破方向…

个人成长|信奉长期主义,就要多做可积累有复利的事。

哈喽啊&#xff0c;大家好&#xff0c;我是雷工&#xff01; 最近有个哥们儿吐槽&#xff0c;说他们公司人事找他谈话&#xff0c;要给降工资&#xff0c;他不同意。 过了没几天又说&#xff1a; “定了&#xff0c;全员降薪”。 “你同意了&#xff1f;” “不同意&#xff0…

CV计算机视觉每日开源代码Paper with code速览-2023.11.21

点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】Multi-entity Video Transformers for Fine-Grained Video Representation Learning 论文地址&…

Qt 串口编程-从入门到实战

1. Qt 串口通信流程解析 1.1 串行通信和并行通信对比 并行通信适合距离较短的通信&#xff0c;且信号容易受干扰&#xff0c;成本高串口通讯-设备&#xff08;蓝牙&#xff0c; wifi&#xff0c; gprs&#xff0c; gps&#xff09; 1.2 Qt 串口通信具体流程 1. 创建 QSerial…

Java基于springboot+vue开发服装商城小程序

演示视频&#xff1a; 小程序 https://www.bilibili.com/video/BV1rM411o7m4/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 管理员 https://www.bilibili.com/video/BV1fc411D7V3/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae…

计算机中vcomp140.dll丢失的解决方法,一键修复vcomp140.dll缺失问题

vcomp140.dll是Visual C 2015 Redistributable的一个组件&#xff0c;它是运行一些基于Visual Studio开发的软件所必需的。当你在运行某些程序时&#xff0c;可能会遇到“找不到vcomp140.dll”的错误提示&#xff0c;这通常是由于系统缺少这个组件导致的。本文将介绍vcomp140.d…

服务运营 |精选:病人向何处去?医院调度的几种建模方法(上)

推文作者&#xff1a; Shutian Li 编者按&#xff1a; 住院流程&#xff08;Inpatient Flow&#xff09;是一种通过协调和优化医院内部流程&#xff0c;以提高患者入院至出院期间的效率和质量的方法。住院流程通常通过医院内部信息系统和协同工作流程进行管理&#xff0c;以确…

4. 无向图的各连通分支

题目 求解无向图的各连通分支 输入&#xff1a; 第一行为图的节点数n&#xff08;节点编号0至n-1&#xff0c;0<n<10&#xff09; 从第二行开始列出图的边&#xff0c;-1表示输入结束 输出&#xff1a; 输出每个连通分支的广度优先搜索序列&#xff08;从连通分支的最…

WordPress无插件实现css、js加速 实现动静态分离

“Wordpress网站现在普遍较慢”&#xff0c;其实是没有做好优化罢了&#xff0c;像我的网站生成页面的时间才0.06s,而且我这网站还有提速的机会呢&#xff0c;如css、js使用CDN加速&#xff0c;实现动静态分离&#xff0c;我安装过&#xff0c;Memcache和PHP加速脚本就已经让我…

NextJS开发:Prisma开启SQL日志输出

在 Prisma 中打印执行的 SQL 可以通过在 PrismaClient 实例上设置 log 配置参数来实现。具体步骤如下&#xff1a; 在你的Prisma项目根目录中&#xff0c;找到 prisma/schema.prisma 文件在 datasource 块中&#xff0c;找到你正在使用的数据库配置&#xff0c;并添加 provide…

ArcGIS中基于人口数据计算人口密度的方法

文章目录 一、密度分析原理二、点密度分析三、线密度分析四、核密度分析一、密度分析原理 密度分析是指根据输入的要素数据集计算整个区域的数据聚集状况,从而产生一个联系的密度表面。通过密度计算,将每个采样点的值散步到整个研究区域,并获得输出栅格中每个像元的密度值。…

C语言——深入理解指针(2)

目录 1. 数组名 2. 指针访问数组 3. 一维数组的传参&#xff08;本质&#xff09; 4. 冒泡排序 5. 二级指针 6. 指针数组&#xff08;指针的数组&#xff09; 7. 指针数组模拟二维数组 1. 数组名 在之前的代码中我们使用指针访问过数组的内容。 int arr[10] {1,2,3,4…

针对c语言的scanf读取字符和字符串解析

在scanf函数中&#xff0c;格式字符串里的空格字符有特定的作用。 当你在格式字符串里放置一个空格时&#xff0c;scanf会尝试匹配并消耗输入中的一个或多个空白字符&#xff08;包括空格、制表符或换行符&#xff09;。换句话说&#xff0c;它会跳过任何空白字符&#xff0c;…

Vue2 Vue3 响应式实现原理

Vue2 和 Vue3 的响应式实现原理有所不同。 Vue2 响应式实现原理&#xff1a; Vue2 使用 Object.defineProperty() 方法来实现数据劫持&#xff0c;从而实现数据的响应式更新。具体步骤如下&#xff1a; 首先&#xff0c;在初始化阶段&#xff0c;遍历 data 对象的所有属性&a…

jQuery_09 事件的绑定与使用(on)

jQuery使用on绑定事件 jQuery可以给dom对象添加事件 在程序执行期间动态的处理事件 1. $("选择器").事件名称(事件处理函数) $("选择器") &#xff1a; 选择0或者多个dom对象 给他们添加事件 事件名称&#xff1a;就是js中事件名称去掉on的部分 比如单击…