news 2026/7/15 3:18:07

第 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/7/1 7:59:04

2026爆火9款免费AI论文工具:自动降重+高级表达一键替换!

最后72小时&#xff01; 毕业季倒计时&#xff0c;论文死线逼近&#xff0c;科研申报进入冲刺期——如果你还在为“写不完、改不动、降重难”彻夜焦虑&#xff0c;那么这篇2026最新急救指南就是你的唯一捷径。本文将用最快的速度告诉你&#xff1a;哪一款AI论文工具能在24小时内…

作者头像 李华
网站建设 2026/7/2 12:50:54

1小时打造你的专属解压工具原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个解压软件最小可行产品(MVP)&#xff0c;包含核心功能&#xff1a;1)文件拖拽解压 2)基础格式支持(ZIP,RAR) 3)解压进度显示 4)简单设置界面。使用PythonPyQt5实现&…

作者头像 李华
网站建设 2026/7/4 12:55:48

3分钟极速安装Docker Desktop的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Docker Desktop极速安装工具&#xff0c;功能要求&#xff1a;1.使用国内镜像源加速下载 2.并行执行下载和系统检查任务 3.预配置常用设置(镜像加速等) 4.最小化用户交互步…

作者头像 李华
网站建设 2026/7/1 7:59:10

30分钟打造‘REBOOT‘错误诊断工具原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个最小功能的启动错误诊断工具原型&#xff0c;要求&#xff1a;1. 基本硬盘检测功能 2. 简单BIOS设置检查 3. 基础修复建议 4. 简洁的CLI界面 5. 可在30分钟内完成开发…

作者头像 李华
网站建设 2026/7/5 6:25:07

Java员工岗前培训学习平台vue3

目录Java员工岗前培训学习平台&#xff08;Vue3&#xff09;摘要开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&am…

作者头像 李华