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

专业网站开发技术网站开发的数据库设计实体是什么

专业网站开发技术,网站开发的数据库设计实体是什么,建设外卖网站规划书,艺术字体在线设计免费版题目链接,描述 https://www.lintcode.com/problem/1446 给定一个大小为 n*m 的 01 矩阵 grid ,1 是墙,0 是路,你现在可以把 grid 中的一个 1 变成 0,请问从左上角走到右下角是否有路可走?如果有路可走&am…

题目链接,描述

https://www.lintcode.com/problem/1446

给定一个大小为 n*m 的 01 矩阵 grid ,1 是墙,0 是路,你现在可以把 grid 中的一个 1 变成 0,请问从左上角走到右下角是否有路可走?如果有路可走,最少要走多少步?1≤n≤110^31≤m≤110^3样例
样例 1:输入:a = [[0,1,0,0,0],[0,0,0,1,0],[1,1,0,1,0],[1,1,1,1,0]] 
输出:7
解释:将(0,1)处的 `1` 变成 `0`,最短路径如下:(0,0)->(0,1)->(0,2)->(0,3)->(0,4)->(1,4)->(2,4)->(3,4) 其他长度为 `7` 的方案还有很多,这里不一一列举。
样例 2:输入:a = [[0,1,1],[1,1,0],[1,1,0]]
输出:-1 
解释:不管把哪个 `1` 变成 `0`,都没有可行的路径。

思路、前置知识

 两次BFS两次BFS,从第一个位置开始得到距离数组arrS从最后一个位置开始得到距离数组arrE和常规BFS不同的时,遇到1也统计距离,但是该位置点不进入队列最后循环每个下标,检查2个数组的距离和是否都小于int最大值,结果就在这些下标里

参考代码

public class Solution {/*** @param grid: The gird* @return: Return the steps you need at least*/public int getBestRoad(int[][] grid) {//两次BFS,从第一个位置开始得到距离数组arrS// 从最后一个位置开始得到距离数组arrE//和常规BFS不同的时,遇到1也统计距离,但是该位置点不进入队列//最后循环每个下标,检查2个数组的距离和是否都小于int最大值,结果就在这些下标里if (grid == null || grid.length == 0 || grid[0].length == 0)return 0;int n = grid.length, m = grid[0].length;int len = n * m; //二维变一维int[] arrS = new int[len];int[] arrE = new int[len];Arrays.fill(arrS, Integer.MAX_VALUE);Arrays.fill(arrE, Integer.MAX_VALUE);bfs(0, 0, arrS, grid);  //从出发点开始统计距离bfs(n - 1, m - 1, arrE, grid); //从终点开始统计距离int ans =Integer.MAX_VALUE;for (int i = 0; i <n ; i++) {for (int j = 0; j <m ; j++) {int index = i*m+j;if(arrS[index] <Integer.MAX_VALUE && arrE[index] <Integer.MAX_VALUE){ans = Math.min(ans,arrS[index]+arrE[index]);}}}return ans < Integer.MAX_VALUE? ans:-1;}public static void bfs(int x, int y, int[] dis, int[][] arr) {Queue<Integer> q = new LinkedList<>();Set<Integer> visited = new HashSet<>();int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}}; //上下左右int n = arr.length,m= arr[0].length;q.add(x*m+y);visited.add(x*m+y);dis[x*m+y] = 0;int step =0;while (!q.isEmpty()){step++;int size = q.size();for (int i = 0; i <size ; i++) {int poll = q.poll();int x1 = poll/m;  //一维坐标转二维横坐标int y1 = poll-x1*m; //一维坐标转二纵横坐标for (int[] dir : dirs) {int x2=x1+dir[0],y2=y1+dir[1];if(x2>=0 && x2<n && y2>=0 && y2<m){int index2 = x2*m+y2;if(visited.contains(index2)) continue;dis[index2] = step; //不管是0还是1都要统计距离visited.add(index2);//只有空地才继续向外扩展if(arr[x2][y2] ==0){q.add(index2);}}}}}}
}
http://www.yayakq.cn/news/166033/

相关文章:

  • 湖南城乡和建设厅网站做购物平台网站需要注意什么
  • 罗湖商城网站设计公司设计一个网站的价格
  • 息壤网站模板wordpress分享微信插件
  • 网站建设和维护工作内容ps图做ppt模板下载网站有哪些
  • 门户网站开发案例成都网络推广哪家好
  • 学校网站建设说明书自己建网站做代理商
  • 广州做外贸网站公司大学生网页设计大赛作品
  • 自助建站公司公众号里的电影网站怎么做的
  • 网站建设要什么软件有哪些成都网站只
  • 建网站和做微信哪个好自己的网站怎么开
  • 从0开始做网站wordpress教育主题
  • 做网站怎么查看来访ip网站排名数据
  • 广州做网站的公司哪家好小游戏大全网页版
  • 重庆网站建设公司联系方式江西城乡建设部网站首页
  • 驾校网站模版中学网站建设
  • 朝阳企业网站建设方案服装电子商务网站建设过程与实现
  • 建设银行什么网站可买手表亚马逊做网站发礼物换评价
  • 网站建设电商免费咨询造成损害
  • 怎么样做一家卖东西的网站沈阳做网站黑酷科技
  • 襄阳营销型网站惠州招聘网
  • 想搭建网站学什么软件开发的流程是什么
  • wordpress 自建网站曲阳网站建设
  • 网站更改备案深圳 网站 传播
  • 微信链接网站怎么做wordpress 侧边悬浮窗
  • 互站网怎么样淄博 网站建设
  • 网站运营与推广论文各行业的专业网址论坛资料
  • 网站推广公司渠道南昌网站建设哪家比较好
  • 如何用阿里云建网站西安哪里好玩
  • 做网站要需要多少钱网件路由器为什么都是官翻
  • 福建建设执业注册管理中心网站赣州深科网站建设