news 2026/6/9 18:46:25

第 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/7 11:52:06

msvcr100.dll文件丢失这么解决的,下载丢失文件免费分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/7 12:22:24

1小时打造ZYPLAYER接口配置原型验证方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速生成一个ZYPLAYER接口配置验证原型。需求&#xff1a;使用Node.js开发最小可行产品&#xff0c;包含核心功能演示&#xff1a;1) 接口连通性测试 2) 基础视频数据获取 3) 播放…

作者头像 李华
网站建设 2026/6/7 12:21:01

CORS是什么?前端新手必看的通俗讲解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式CORS教学演示页面&#xff0c;包含&#xff1a;1) 动画演示同源策略 2) 可操作的简单前后端示例 3) 实时修改响应头观察效果 4) 常见错误情景模拟 5) 解决方案步骤引…

作者头像 李华
网站建设 2026/6/9 15:56:07

AI一键搞定Maven配置:告别繁琐的环境搭建

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个基于AI的Maven配置助手工具&#xff0c;要求&#xff1a;1.自动检测用户操作系统类型和版本 2.分析现有Java环境配置 3.智能推荐最适合的Maven版本 4.自动生成settings.xm…

作者头像 李华