news 2026/6/15 17:34:03

第 483 场周赛Q2——3799. 单词方块 II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第 483 场周赛Q2——3799. 单词方块 II

题目链接:3799. 单词方块 II(中等)

算法原理:

解法:暴力枚举 + 约束过滤

21ms击败70.07%

时间复杂度O(N⁴ log N)

①数据预处理:将所有单词存入 HashSet,快速校验单词存在性
②暴力枚举候选:通过四重嵌套循环,分别遍历作为四方块 “上、左、右、下” 四个方向的单词
③唯一性过滤:要求 top、left、right、bottom 四个单词互不相同,过滤重复组合
④字符边界约束:校验四方块的字符匹配规则(索引从 0 开始):
上边首字符 = 左边首字符(top [0] == left [0]);
上边尾字符 = 右边首字符(top [3] == right [0]);
下边首字符 = 左边尾字符(bottom [0] == left [3]);
下边尾字符 = 右边尾字符(bottom [3] == right [3])
⑤结果收集与排序:将满足约束的四单词组合存入结果列表,最后按列表内单词依次字典序排序结果

Java代码:

class Solution { public List<List<String>> wordSquares(String[] words) { //存储单词,方便快速检查存在性 Set<String> wordSet=new HashSet<>(); //手动把word数组的元素添加到Set里 for(String word:words) wordSet.add(word); List<List<String>> ret=new ArrayList<>(); //遍历所有可能的top、left、right、bottom组合 for(String top:words){ for(String left:words){ //确保top和left不同 if(top.equals(left)) continue; //检查约束:top[0]==left[0] if(top.charAt(0)!=left.charAt(0)) continue; for(String right:words){ //确保right与top、left都不同 if(top.equals(right)||right.equals(left)) continue; //检查约束:top[3]==right[0] if(top.charAt(3)!=right.charAt(0)) continue; //确定bottom需要满足的首字符和尾字符 char bottomFirst=left.charAt(3); char bottomLast=right.charAt(3); for(String bottom:words){ //确保bottom与top、left、right都不同 if(bottom.equals(top)||bottom.equals(left)||bottom.equals(right)) continue; //检查约束:bottom[0]==left[3]且bottom[3]==right[3] if(bottom.charAt(0)==bottomFirst&&bottom.charAt(3)==bottomLast){ //手动创建List并添加四个单词 List<String> q=new ArrayList<>(); q.add(top);q.add(left);q.add(right);q.add(bottom); ret.add(q); } } } } } //比较规则,在上左右下的框架下,从每组的首单词一次开始往后按字典学比较排序 Collections.sort(ret,new Comparator<List<String>>(){ @Override public int compare(List<String> a,List<String> b){ for(int i=0;i<4;i++){ int cmp=a.get(i).compareTo(b.get(i)); if(cmp!=0) return cmp; } return 0; } }); return ret; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 20:35:35

Katalon Studio快速入门指南

在当今快节奏的软件开发周期中&#xff0c;自动化测试已成为保障产品质量、提升交付效率的关键环节。对于测试新手或希望优化流程的团队而言&#xff0c;选择一个功能全面且易于上手的工具至关重要。Katalon平台便是一个集成了测试创建、管理、执行与分析的一体化解决方案&…

作者头像 李华
网站建设 2026/6/15 12:38:39

AI一键生成Python镜像源配置脚本,开发效率翻倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Python脚本&#xff0c;自动检测当前系统环境&#xff0c;然后根据用户选择自动配置阿里云、清华、豆瓣等国内镜像源到pip和conda。要求包含以下功能&#xff1a;1.自动识…

作者头像 李华
网站建设 2026/6/15 15:44:03

cv2.VideoWriter_fourcc 是 OpenCV(cv2)中用于设置视频编码格式的核心函数

cv2.VideoWriter_fourcc 是 OpenCV(cv2)中用于设置视频编码格式的核心函数 cv2.VideoWriter_fourcc 是 OpenCV(cv2)中用于设置视频编码格式的核心函数,专门为 cv2.VideoWriter 类指定视频文件的压缩编码方式,决定了视频文件的格式和兼容性。下面为你详细拆解其用法、参数…

作者头像 李华
网站建设 2026/6/6 14:26:28

Java心理咨询测试分析预测系统springbootvue3

目录 系统概述核心功能技术实现应用价值创新点 开发技术 核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概…

作者头像 李华
网站建设 2026/6/15 14:30:38

AI如何用OWASP ZAP提升Web安全测试效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于OWASP ZAP的AI辅助安全测试工具&#xff0c;能够自动识别Web应用中的常见漏洞&#xff08;如SQL注入、XSS等&#xff09;&#xff0c;并提供修复建议。工具应支持自定…

作者头像 李华
网站建设 2026/6/15 13:38:47

5分钟快速验证:用Neo4j构建社交网络原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个社交网络快速原型系统&#xff0c;预装Neo4j并包含&#xff1a;1) 自动下载启动Neo4j 2) 预加载社交网络示例数据 3) 内置好友推荐、共同联系人等常见查询 4) 简易可视化界…

作者头像 李华