算法提升——LeetCode第385场周赛总结
题目
统计前后缀下标对 I
给你一个下标从0开始的字符串数组words。
定义一个布尔函数isPrefixAndSuffix,它接受两个字符串参数str1和str2:
当str1同时是str2的前缀(prefix)和后缀(suffix)时,isPrefixAndSuffix(str1,str2)返回true,否则返回false。
例如,isPrefixAndSuffix(“aba”,“ababa”)返回true,因为"aba"既是"ababa"的前缀,也是"ababa"的后缀,但是isPrefixAndSuffix(“abc”,“abcd”)返回false。
以整数形式,返回满足i<j且isPrefixAndSuffix(words[i],words[j])为true的下标对(i,j)的数量。
解题思路
暴力判断每一个字符串是否是开头或结尾,代码如下:
class Solution {public int countPrefixSuffixPairs(String[] words) {int res=0;int len=words.length;for(int i=0;i<len;i++){for(int j=i+1;j<len;j++){if (isPrefixAndSuffix(words[i],words[j])){res++;}}}return res;}public boolean isPrefixAndSuffix(String a,String b){return b.startsWith(a)&&b.endsWith(a);}}
最长公共前缀长度
给你两个正整数数组arr1和arr2。
正整数的前缀是其最左边的一位或多位数字组成的整数。例如,123是整数12345的前缀,而234不是。
设若整数c是整数a和b的公共前缀,那么c需要同时是a和b的前缀。例如,5655359和56554有公共前缀565,而1223和43456没有公共前缀。
你需要找出属于arr1的整数x和属于arr2的整数y组成的所有数对(x,y)之中最长的公共前缀的长度。
返回所有数对之中最长公共前缀的长度。如果它们之间不存在公共前缀,则返回0。
解题思路
预先处理arr1所有前缀到set中,然后arr2依次判断即可,代码如下:
class Solution {public int longestCommonPrefix(int[] arr1, int[] arr2) {Set<Integer> st = new HashSet<>();for (int x : arr1) {for (; x > 0; x /= 10) {st.add(x);}}int mx = 0;for (int x : arr2) {for (; x > 0 && !st.contains(x); x /= 10) ;mx = Math.max(mx, x);}return mx > 0 ? Integer.toString(mx).length() : 0;}
}
出现频率最高的质数
给你一个大小为mxn、下标从0开始的二维矩阵mat。在每个单元格,你可以按以下方式生成数字:
最多有8条路径可以选择:东,东南,南,西南,西,西北,北,东北。
选择其中一条路径,沿着这个方向移动,并且将路径上的数字添加到正在形成的数字后面。
注意,每一步都会生成数字,例如,如果路径上的数字是1,9,1,那么在这个方向上会生成三个数字:1,19,191。
返回在遍历矩阵所创建的所有数字中,出现频率最高的、大于10的质数;如果不存在这样的质数,则返回-1。如果存在多个出现频率最高的质数,那么返回其中最大的那个。
注意:移动过程中不允许改变方向。
解题思路
对于每个单元格,枚举八个方向,生成数字,统计其中质数个数。代码如下:
class Solution {private static final int[][] DIRS = {{1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};public int mostFrequentPrime(int[][] mat) {int m = mat.length;int n = mat[0].length;Map<Integer, Integer> cnt = new HashMap<>();for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {for (int[] d : DIRS) {int x = i + d[0];int y = j + d[1];int v = mat[i][j];while (x >= 0 && x < m && y >= 0 && y < n) {v = v * 10 + mat[x][y];if (isPrime(v)) {cnt.merge(v, 1, Integer::sum);}x += d[0];y += d[1];}}}}int ans = -1;int maxCnt = 0;for (Map.Entry<Integer, Integer> e : cnt.entrySet()) {int v = e.getKey();int c = e.getValue();if (c > maxCnt) {ans = v;maxCnt = c;} else if (c == maxCnt) {ans = Math.max(ans, v);}}return ans;}private boolean isPrime(int n) {for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return false;}}return true;}
}
统计前后缀下标对 II
给你一个下标从0开始的字符串数组words。
定义一个布尔函数isPrefixAndSuffix,它接受两个字符串参数str1和str2:
当str1同时是str2的前缀(prefix)和后缀(suffix)时,isPrefixAndSuffix(str1,str2)返回true,否则返回false。
例如,isPrefixAndSuffix(“aba”,“ababa”)返回true,因为"aba"既是"ababa"的前缀,也是"ababa"的后缀,但是isPrefixAndSuffix(“abc”,“abcd”)返回false。
以整数形式,返回满足i<j且isPrefixAndSuffix(words[i],words[j])为true的下标对(i,j)的数量。
解题思路
本题跟第一题一致,不过在用暴力法就没办法解决了。可以用字典树解决本题。
class Node {Map<Integer, Node> son = new HashMap<>();int cnt;
}class Solution {public long countPrefixSuffixPairs(String[] words) {long ans = 0;Node root = new Node();for (String S : words) {char[] s = S.toCharArray();int n = s.length;Node cur = root;for (int i = 0; i < n; i++) {int p = (s[i] - 'a') << 5 | (s[n - 1 - i] - 'a');cur = cur.son.computeIfAbsent(p, k -> new Node());ans += cur.cnt;}cur.cnt++;}return ans;}
}
总结
参与了许多周赛,却始终在第三题上遇到瓶颈,难以突破。反复总结经验后发现,虽然题解看起来简单,但亲自动手解决时总是遇到难题,无法顺利通过。为了改进这一状况,在接下来的练习中,我打算从第三题开始着手,以此作为突破口,提升我的解题能力。
相关文章:
算法提升——LeetCode第385场周赛总结
题目 统计前后缀下标对 I 给你一个下标从0开始的字符串数组words。 定义一个布尔函数isPrefixAndSuffix,它接受两个字符串参数str1和str2: 当str1同时是str2的前缀(prefix)和后缀(suffix)时,…...

【README 小技巧】在项目README.md 中展示发布到maven 仓库版本
在项目README.md 中展示发不到nexus 的快照版本 <p align"center"><a target"_blank" href"https://search.maven.org/search?qwu-lazy-cloud-network%20wu-lazy-cloud-network"><img src"https://img-home.csdnimg.cn/ima…...
R语言【ClusterR】——KMeans_rcpp()
Package ClusterR version 1.3.2 Description 使用RcppArmadillo计算k-means。 Usage KMeans_rcpp(data,clusters,num_init = 1,max_iters = 100,initializer = "kmeans++",fuzzy = FALSE,verbose = FALSE,CENTROIDS = NULL,tol = 1e-04,tol_optimal_init = 0.3,se…...

7-liunx服务器规范
目录 概况liunx日志liunx系统日志syslog函数openlog 可以改变syslog默认输出方式 ,进一步结构化 用户信息进程间的关系会话ps命令查看进程关系 系统资源限制改变工作目录和根目录服务器程序后台话 概况 liunx服务器上有很多细节需要注意 ,这些细节很重要…...
java序列化之Jackson
当涉及到在Java中进行JSON序列化和反序列化时,Jackson和Gson是两个最常用的库。它们都提供了强大的功能来处理JSON数据,但在某些方面有一些不同之处。 Jackson Jackson 是一个功能强大且灵活的 JSON 处理库,由 FasterXML 维护。以下是 Jackson 的一些特点 强大的功能 Ja…...

服务区智慧公厕
在如今追求智能化、便捷化的社会背景下,高速公路服务区智慧公厕正成为人们关注的焦点。作为高速公路上的必要设施,公厕的提升已经不再局限于简单的清洁卫生,而是更多地涉及到智能化、舒适度和用户体验。本文以智慧公厕源头厂家广州中期科技有…...
mysql数据库 - 统诉
1、DDL - 数据库操作 show databases; create database 数据库名 use 数据库名 select database() drop database 数据库名 2、DDL- 表操作 show tables; create table desc 表名 show create table 表名 alter table 表名 add/modify/change/rename drop table 表名 3、DML …...

Python入门必学:单引号、双引号与三引号的差异与应用
Python入门必学:单引号、双引号与三引号的差异与应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得…...
spring缓存的使用
Spring缓存使用 缓存注解 对于Spring,缓存组件例如EhCache是可拔插的,而缓存注解是通用的。 Cacheable 标记在方法或者类上,标识该方法或类支持缓存。Spring调用注解标识方法后会将返回值缓存到redis,以保证下次同条件调用该方…...

交换整数的二进制奇偶位
题目:写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。 假设我们举例:10 那么他的二进制就是:00000000 00000000 00000000 00001010 交换以后组成的新的数就是 5 怎么用写这个宏呢? 1.分别拿出奇数位和偶数位…...
在做了frp的实验室服务器不同端口间传输文件
背景 实验室有两台服务器,使用的是一个IP,两个端口,给人看上去是一台服务器的两个端口,实际是两台服务器。 现在我需要从一个端口传输一个文件夹到另外一个端口,实际上是从一个机器传输到另外一个机器。 操作 在两台…...

数据结构链表力扣例题AC(3)——代码以及思路记录
160. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 AC写法一 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//思…...

C++初阶:容器适配器priority_queue常用接口详解及模拟实现、仿函数介绍
介绍完了stack和queue的介绍以及模拟的相关内容后:C初阶:容器适配器介绍、stack和queue常用接口详解及模拟实现 接下来进行priority_queue的介绍以及模拟: 文章目录 1.priority_queue的介绍和使用1.1priority_queue的初步介绍1.2priority_que…...
提取淘宝店铺联系方式的爬虫工具
随着电子商务的快速发展,淘宝成为了许多人购物的首选平台。而对于一些商家来说,获取淘宝店铺的联系方式是非常重要的,以便建立更加直接和有效的沟通渠道。本文将介绍一种基于Python的爬虫工具,可以帮助我们提取淘宝店铺的联系方式…...
Eureka服务搭建
1️⃣搭建服务 引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>启动类加注解 EnableEurekaServer SpringBootApplication public…...

SORA技术报告
文档链接:https://openai.com/research/video-generation-models-as-world-simulators 文章目录 Video generation models as world simulatorsTurning visual data into patchesVideo compression networkSpacetime latent patchesScaling transformers for video …...

Python Web开发记录 Day1:HTML
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、HTML1、前端引入和HTML标签①前端引入②浏览…...

六、回归与聚类算法 - 模型保存与加载
目录 1、API 2、案例 欠拟合与过拟合线性回归的改进 - 岭回归分类算法:逻辑回归模型保存与加载无监督学习:K-means算法 1、API 2、案例...

Spring事务模板及afterCommit存在的坑
大家好,我是墨哥(隐墨星辰)。今天的内容来源于两个线上问题,主要和大家聊聊为什么支付系统中基本只使用事务模板方法,而不使用声明式事务Transaction注解,以及使用afterCommit()出现连接未按预期释放导致的…...

【区块链】联盟链
区块链中的联盟链 写在最前面**FAQs** 联盟链:区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...