LeetCode 909 208

题目

 909. 蛇梯棋

思路

完全不会!呜呜呜,看了别人的题解。二维数组之字形遍历放在一维数组里面,然后借助队列对数组进行bfs。 

代码

class Solution {int n;int[] nums;public int snakesAndLadders(int[][] board) {// 暴力遍历n = board.length;// +1 是为了和方格对齐nums = new int[n*n + 1];// 借助标志isRight来之字形遍历二维数组 放在1维数组中boolean isRight = true;int idx = 1;for(int i = n - 1; i >= 0; i--){for(int j = (isRight? 0: n-1); isRight? j < n: j>= 0; j += isRight? 1: -1){nums[idx ++] = board[i][j];}isRight = !isRight;}int ans = bfs();return ans;}private int bfs(){Deque<Integer> queue = new LinkedList<>();Map<Integer, Integer> map = new HashMap<>();queue.addLast(1);// 初始化 在方格1 需要走0步map.put(1, 0);while(!queue.isEmpty()){int poll = queue.pollFirst();int step = map.get(poll);// 走到终点 返回步数if(poll == n*n) return step;for(int i = 1; i <= 6; i++){int np = poll + i;// 无效步数if(np <= 0 || np > n*n) continue;// 出现蛇或者梯子if(nums[np] != -1) np = nums[np];// 该步已经走过了if(map.containsKey(np)) continue;// 记录走到该位置需要的步数map.put(np, step+1);// 添加到队列中 可以作为下一阶段的起点queue.addLast(np);}}return -1;}
}

题目

208. 实现 Trie (前缀树) 

思路

不知道前缀树应该是个什么样子的,去看了题解。主要有两个属性:isEnd用于标记当前字符是否为结束字符;Trie[]用于保存下一个可能出现的所有字符连接;

 

代码 

class Trie {// 标记当前字符是否为结束字符private boolean isEnd;// 保存了对当前结点而言 下一个可能出现的所有字符的链接private Trie[] children;public Trie() {children = new Trie[26];isEnd = false;}public void insert(String word) {Trie node = this;for(int i = 0; i < word.length(); i++){char ch = word.charAt(i);// 计算当前字符对应的下标int index = ch - 'a';// 原来的树中没有这个前缀 if(node.children[index] == null){node.children[index] = new Trie();}// 继续创建该单词的后续字符node = node.children[index];}node.isEnd = true;}public boolean search(String word) {// 找得到且当前node是结束节点Trie node = searchPrefix(word);return node != null && node.isEnd;}public boolean startsWith(String prefix) {Trie node = searchPrefix(prefix);return node != null ;}public Trie searchPrefix(String prefix){// 如果找得到返回node 找不到返回nullTrie node = this;for(int i = 0; i < prefix.length(); i++){char ch = prefix.charAt(i);int index = ch - 'a';if(node.children[index] == null){return null;}node = node.children[index];}return node;}
}

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

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

相关文章

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

MySQL高负载排查方法最佳实践(15/16)

高负载排查方法 CPU占用率过高问题排查 使用mpstat查看cpu使用情况。 # mpstat 是一款 CPU 性能指标实时展示工具 # 能展示每个 CPU 核的资源视情况&#xff0c;同时还能将资源使用情况进行汇总展示 # 如果CPU0 的 %idle 已经为 0 &#xff0c;说明此核已经非常繁忙# 打印所…

idea: 没有 new java class

如图&#xff1a; 解决&#xff1a; 右键点击--> Mark Directory as --> Sources Root ok

Python处理PDF:在PDF文档中插入页眉和页脚

在处理篇幅较长、结构复杂的PDF文档时&#xff0c;页眉和页脚的设计与插入就显得尤为重要。它们不仅扮演着美化文档、提升专业度的角色&#xff0c;更承担了导航指引、信息标注的重要功能。 页眉通常用于展示文档的标题或章节名称&#xff0c;有助于读者在翻阅过程中迅速定位所…

kubekey 离线安装harbor、k8s、kubesphere

目录 参考文献 了解kubekey 英文和中文 前提条件 部署准备 下载kubukey 离线包配置和制作 配置离线包 制作离线包 离线安装集群 复制KubeKey 和制品 artifact到离线机器 创建初始换、安装配置文件 安装镜像仓库harbor 初始化harbor 项目 修改配置文件 安装k8s集…

WinRAR再爆0 day漏洞,0 day漏洞该如何有效预防

WinRAR再爆0 day漏洞&#xff0c;已被利用超过4个月。 Winrar是一款免费的主流压缩文件解压软件&#xff0c;支持绝大部分压缩文件格式的解压&#xff0c;全球用户量超过5亿。Group-IB研究人员在分析DarkMe恶意软件时发现WinRAR在处理ZIP文件格式时的一个漏洞&#xff0c;漏洞…

MAC M1版IDEA热部署JRebel

1、在idea里面安装jrebel插件 2、下载激活工具&#xff1a;ReverseProxy_darwin_amd64 下载地址&#xff08;Mac早期用户使用Safari下载&#xff0c;不要用Chrome&#xff0c;否则下载之后会把.dms后缀名去掉&#xff09; 特别注意&#xff1a;M1用户请使用下面的下载&#xff…

探探各个微前端框架

本文作者为 360 奇舞团前端开发工程师 微前端架构是为了在解决单体应用在一个相对长的时间跨度下&#xff0c;由于参与的人员、团队的增多、变迁&#xff0c;从一个普通应用演变成一个巨石应用(Frontend Monolith)后&#xff0c;随之而来的应用不可维护的问题。这类问题在企业级…

基于模型预测算法的含储能微网双层能量管理模型

基于模型预测算法的含储能微网双层能量管理模型 文章目录 基于模型预测算法的含储能微网双层能量管理模型一、项目介绍二、源程序下载 一、项目介绍 代码主要做的是一个微网双层优化调度模型&#xff0c;微网聚合单元包括风电、光伏、储能以及超级电容器&#xff0c;在微网的运…

手动实现简易版RPC(下)

手动实现简易版RPC(下) 前言 什么是RPC&#xff1f;它的原理是什么&#xff1f;它有什么特点&#xff1f;如果让你实现一个RPC框架&#xff0c;你会如何是实现&#xff1f;带着这些问题&#xff0c;开始今天的学习。 接上一篇博客 手动实现简易版RPC&#xff08;上&#xff…

OpenHarmony4.0分布式任务调度浅析

1 概述 OpenHarmony 分布式任务调度是一种基于分布式软总线、分布式数据管理、分布式 Profile 等技术特性的任务调度方式。它通过构建一种统一的分布式服务管理机制&#xff0c;包括服务发现、同步、注册和调用等环节&#xff0c;实现了对跨设备的应用进行远程启动、远程调用、…

动态规划-入门三道题

1137. 第 N 个泰波那契数 题目描述&#xff1a; 状态表示: dp[i]表示第i个泰波那契数。 状态转移方程&#xff1a; dp[i]dp[i-3]dp[i-2]dp[i-1]。 初始化: 动态规划问题的初始化就是为了去避免初始情况下的越界问题。这里就对dp[0]0,dp[1]1,dp[2]1这样进行初始化即可&#xf…