当前位置: 首页 > news >正文

网站开发的兼职网站湛江网站模板

网站开发的兼职网站,湛江网站模板,成都好的网站设计公司,建设银行住房租赁代表品牌是什么【问题描述】[中等] 请设计一个函数#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始#xff0c;每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格#xff0c;那么该路径不能再次进入…【问题描述】[中等] 请设计一个函数用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格那么该路径不能再次进入该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径路径中的字母用加粗标出。[[a,b,c,e], [s,f,c,s], [a,d,e,e]]但矩阵中不包含字符串“abfb”的路径因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后路径不能再次进入这个格子。示例 1输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word ABCCED 输出true 示例 2输入board [[a,b],[c,d]], word abcd 输出false 提示1 board.length 200 1 board[i].length 200 【解答思路】 DFS 时间复杂度 class Solution {public boolean exist(char[][] board, String word) {char[] words word.toCharArray();for(int i 0; i board.length; i) {for(int j 0; j board[0].length; j) {if(dfs(board, words, i, j, 0)) return true;}}return false;}boolean dfs(char[][] board, char[] word, int i, int j, int k) {if(i board.length || i 0 || j board[0].length || j 0 || board[i][j] ! word[k]) return false;if(k word.length - 1) return true;char tmp board[i][j];board[i][j] /;boolean res dfs(board, word, i 1, j, k 1) || dfs(board, word, i - 1, j, k 1) || dfs(board, word, i, j 1, k 1) || dfs(board, word, i , j - 1, k 1);board[i][j] tmp;return res;} }归搜索匹配字符串过程中需要 board[i][j] ‘/’ 来防止 ”走回头路“ 。当匹配字符串不成功时会回溯返回此时需要board[i][j] tmp 来”取消对此单元格的标记”。 在DFS过程中每个单元格会多次被访问的 board[i][j] /只是要保证在当前匹配方案中不要走回头路。 一层一层向下递归来进行字符串匹配的回溯的时候要“释放“这个单元格。匹配失败或者成功都会执行 board[i][j] tmp 匹配成功也需要将 True 结果一层一层返回直至起始点以获取匹配成功的结果 class Solution {private int[][] direct {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};private boolean[][] visited;public boolean exist(char[][] board, String word) {char[] words word.toCharArray();int row board.length;int col board[0].length;this.visited new boolean[row][col];for (int i 0; i row; i) {for (int j 0; j col; j) {if (dfs(board, i, j, words, 0)) {return true;}}}return false;}private boolean dfs(char[][] board, int x, int y, char[] word, int index) {if (board[x][y] word[index]) {if (index 1 word.length) {return true;}visited[x][y] true;for (int i 0; i 4; i) {int newX x direct[i][0];int newY y direct[i][1];if (inArea(newX, newY, board.length, board[0].length) !visited[newX][newY]) {if (dfs(board, newX, newY, word, index 1)) {return true;}}}visited[x][y] false;}return false;}private boolean inArea(int x, int y, int row, int col) {return x 0 y 0 x row y col;} }【总结】 1.细节 1.1 方向数组 private int[][] direct {{-1, 0}, {0, -1}, {1, 0}, {0, 1}}; 1.2 char[] words word.toCharArray(); 替代Sting.charAt()charAt每次都要检查边界 1.3 边界判定 private boolean inArea(int x, int y, int row, int col) { return x 0 y 0 x row y col; } } 2.回溯 遍历时对原结果有影响 在dfs递归前后置状态-恢复状态 visited[x][y] true;dfsvisited[x][y] false;3. 算法原理 深度优先搜索 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归先朝一个方向搜到底再回溯至上个节点沿另一个方向搜索以此类推。 剪枝 在搜索中遇到 这条路不可能和目标字符串匹配成功 的情况例如此矩阵元素和目标字符不同、此元素已被访问则应立即返回称之为 可行性剪枝 。 转载链接https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/solution/mian-shi-ti-12-ju-zhen-zhong-de-lu-jing-shen-du-yo/
http://www.yutouwan.com/news/191943/

相关文章:

  • 个人主页网站html全新升级网站
  • 百度自动驾驶技术南昌seo推广外包
  • 中国建设银行网站怎么登录不上wordpress增加英文
  • 网站建设哪家便WordPress 输入任意作者
  • 网站建设需要提供的资料太原百度公司地址
  • 厦门同安网站制作企业中山商城网站建设
  • 企业网站的内容营销ui界面设计师
  • 网站优化需要哪些工具广告关键词有哪些类型
  • 视频网站源码下载海丰县建设局网站
  • 广州公司网站建设公司网站模板 单页
  • 专门做茶叶的网站网站建设 坚持实用原则
  • asp 网站开发教程传媒公司logo
  • 阳江公司做网站怎样制作网站的步骤
  • 人才网网站开发手册如何查网站建设者ip
  • 厦门商城网站建设静态网站的设计方案
  • 物流网站的建设论文一万字wordpress 英文转中文
  • 汝州市住房和城乡规划建设局网站滨海营销型网站建设
  • 湖北建设厅举报网站东莞网站建设公司好
  • 国外商品网站连云港规划建设网站
  • 长沙招聘网站哪个最好wordpress去掉搜索
  • 宁波网站设计推荐荣盛网络北京做网站建设的公司哪家好
  • 学校如何建设网站首页wordpress网页文件太多
  • 河南省建设厅专业业务系统网站泗洪网页定制
  • 建设网站首页应该采用编程python适合多大孩子学
  • 旅游网站源码wordpress获取当前分类名称
  • 网站域名费用小型网站网站建设需要
  • 威胁网站检测平台建设wordpress网站静态化
  • 网站建设方案包括哪些内容做软件的步骤
  • 网站如何实现多语言网络运维工程师求职信
  • 企业网站建设的管理制度汕头免费建设网站制作