java圆形泳池问题_Java实现 LeetCode 778 水位上升的泳池中游泳(二分+DFS)

778. 水位上升的泳池中游泳

在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。

现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。假定你可以瞬间移动无限距离,也就是默认在方格内部游动是不耗时的。当然,在你游泳的时候你必须待在坐标方格里面。

你从坐标方格的左上平台 (0,0) 出发。最少耗时多久你才能到达坐标方格的右下平台 (N-1, N-1)?

示例 1:

输入: [[0,2],[1,3]]

输出: 3

解释:

时间为0时,你位于坐标方格的位置为 (0, 0)。

此时你不能游向任意方向,因为四个相邻方向平台的高度都大于当前时间为 0 时的水位。

等时间到达 3 时,你才可以游向平台 (1, 1). 因为此时的水位是 3,坐标方格中的平台没有比水位 3 更高的,所以你可以游向坐标方格中的任意位置

示例2:

输入: [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]]

输入: 16

解释:

0 1 2 3 4

24 23 22 21 5

12 13 14 15 16

11 17 18 19 20

10 9 8 7 6

最终的路线用加粗进行了标记。

我们必须等到时间为 16,此时才能保证平台 (0, 0) 和 (4, 4) 是连通的

提示:

2 <= N <= 50.

grid[i][j] 位于区间 [0, …, N*N - 1] 内。

class Solution {

public int swimInWater(int[][] grid) {

int N = grid.length;

int lo = Math.max(grid[0][0], grid[N - 1][N -1]);

int hi = N * N - 1;

BitSet bs = new BitSet(hi);

while (lo < hi) {

int mi = (lo + hi) >> 1;

if (dfs(grid, 0, 0, mi, bs)) hi = mi;

else lo = mi + 1;

bs.clear();

}

return lo;

}

public boolean dfs (int[][] grid, int i, int j, int limit, BitSet bs) {

if (bs.get(i * grid.length + j) || grid[i][j] > limit) return false;

if (i == grid.length - 1 && j == grid.length - 1) return true;

bs.set(i * grid.length + j);

if (i < grid.length - 1 && dfs(grid, i + 1, j, limit, bs)) return true;

if (j < grid.length - 1 && dfs(grid, i, j + 1, limit, bs)) return true;

if (i > 0 && dfs(grid, i - 1, j, limit, bs)) return true;

if (j > 0 && dfs(grid, i, j - 1, limit, bs)) return true;

return false;

}

}

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

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

相关文章

python可以构建sem模型_python-分组的熊猫DataFrames:如何将scipy.stats.sem应用于它们?...

我知道我可以通过执行以下操作来应用numpy方法&#xff1a;dataList是DataFrames的列表(相同的列/行).testDF (concat(dataList, axis1, keysrange(len(dataList))).swaplevel(0, 1, axis1).sortlevel(axis1).groupby(level0, axis1))testDF.aggregate(numpy.mean)testDF.aggr…

java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法

package com.str;public class ZiFuChuan {public static String ss "全局变量!!!!!!";String s2 null;public int aa 1 ;int aa2;double dou 1.1;Double d new Double(1.1);public static void main(String[] args) {}public ZiFuChuan(){}public ZiFuChuan(St…

java phantomjs 截图_phantomjs 截图

phantomjs 截图&#xff0c;多个setTimeout是为了让页面尽量加载完整/**截图test.js**/var page require(webpage).create();page.viewportSize { width: 1024, height: 600 };page.open(http://www.2345.com/, function(status) {var bb page.evaluate(function(){// window…

JAVA如何隐藏异常堆栈_java – 如何在控制台上停止打印异常堆栈跟踪?

这是我做的这样的战争作为工作。添加一个过滤器并劫持所有的请求和响应。检查异常并检查类型。/*** Hijacks all the http request and response here.* Catch the SocketException and do not print* If other exceptions print to console* date : 9-18-2013** author Suresh…

阿里最新php面试题及答案,面经网-阿里php面试题(四)

阿里php面试题(四)1.表单中 get与post提交方法的区别&#xff1f;答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.2.session与cookie的区别?答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_…

php 条形码生成器,PHP条形码图像生成器

这是一个用于生成barocdes的简单PHP脚本&#xff1a;//For displaying barcodes//Arguments are:// code Number you want outputted as a barcode//You can use this script in two ways:// From a webpage/PHP script // Directly in your web browser http://www.example.co…

php怎么把日期加时间,将小时分钟添加到日期时间 - php

任何人都可以帮助我解决长时间困扰的问题&#xff0c;我正在尝试添加时间&#xff0c;例如格式为h:ia的小时和分钟&#xff0c;格式为01:00(一个小时)&#xff0c;00:30(30分钟)&#xff0c; 02:00(两个小时)等。在php中。因为我有几个小时&#xff0c;例如(00:30,01:00,01:30,…

php keep user login,php5.4安装dedecms登录后台空白解决办法(session_register函数已废弃)...

本地安装dedecms5.7登录后台空白&#xff0c;找了原因&#xff0c;原来是session_register函数已经被php5.4废弃的原因。-------------------------------------------------------------解决方法&#xff1a;找开include/userlogin.class.php文件&#xff0c;查找以下内容&…

java欧冠抽签,欧冠抽签吐槽:最大的“礼包”被C罗拿走!梅西出局概率超50%?...

欧冠16强抽签揭晓&#xff0c;结果&#xff1a;多特VS巴黎&#xff0c;皇马VS曼城&#xff0c;亚特兰大VS瓦伦西亚&#xff0c;马竞VS利物浦&#xff0c;切尔西VS拜仁&#xff0c;里昂VS尤文图斯&#xff0c;热刺VS莱比锡&#xff0c;那不勒斯VS巴萨。怎么评价这样的抽签呢&…

java ajax报错500,(Struts2+JSON+Ajax) XMLHttpRequest ==500如何解决

(Struts2JSONAjax) XMLHttpRequest 500怎么解决&#xff1f;本帖最后由 zjlisok 于 2013-01-29 02:00:05 编辑XMLHttpRequest.status500奇怪了&#xff0c;搞了半天还没有解决。朋友们请帮我一把&#xff0c;谢谢&#xff01;废话不说&#xff0c;先上代码JS代码&#xff1a;va…

PHP的rm指令,git rm 命令

git rm 命令git rm 命令用于删除文件。如果只是简单地从工作目录中手工删除文件&#xff0c;运行 git status 时就会在 Changes not staged for commit 的提示。git rm 删除文件有以下几种形式&#xff1a;1、将文件从暂存区和工作区中删除&#xff1a;git rm 以下实例从暂存区…

jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?

1.在Java中使用Deprecated方法或类是错误的吗&#xff1f;从已弃用的定义 &#xff1a;注释Deprecated的程序元素是程序员不鼓励使用的程序元素&#xff0c;通常是因为它是危险的&#xff0c;或者是因为存在更好的select。该方法被保存在API中&#xff0c;用于在未指定的时间段…

java运算符试题,编程语⾔⾯试题之新版javase基础语法篇之运算符

简介&#xff1a;⾯试中 短路运算符 和 位运算考点&#xff1a;计算机基础运算知识难度【** *】你知道 运算符 &和&&、|和||的区别吗&#xff1f;& 按位与操作只有对应的两个⼆进制数为1时&#xff0c;结果位才为11&1 11&0 00&1 00&0 0| 按…

matlab 流固耦合,详讲流固耦合

引言近来&#xff0c;航空航天工业在世界上发展迅速&#xff0c;而作为“飞机心脏”的航空发动机是限制其发展的主要因素。目前&#xff0c;航空发动机日益向高负荷、高效率和高可靠性的趋势发展&#xff0c;高负荷导致的高逆压力梯度容易引起流动分离&#xff0c;同时随着科技…

php加大session,PHP :: Bug #63251 :: yaf session功能增强

[2012-10-10 06:34 UTC] vipcenter at vip dot qq dot comDescription:------------一&#xff1a;建议增加:设置和获取session_id的方法&#xff01;如&#xff1a;Session::getInstance()->id(qtvv60cui9c22qlk2fqr0na1d1);如果不传参则返回当前使用的session_id二&#x…

php提示是否运行,php运行错误提示

第一种方法在php.ini文件里改变display_errors和error_reporting的值&#xff0c;没有的直接加上。; 第一处修改; display_errors Offdisplay_errors On; 第二处修改; error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICTerror_reporting E_ALL | E_STRICTdisplay_…

php stream encoding,PHP之mb_check_encoding使用方法分享

本文主要和大家分享mb_check_encoding使用方法&#xff0c;希望能帮助到大家。mb_check_encoding(PHP 4 > 4.4.3, PHP 5 > 5.1.3, PHP 7)mb_check_encoding — Check if the string is valid for the specified encodingmb_check_encoding — 检查字符串在指定的编码里是…

usb转ttl模块与matlab,图文详解USB转TTL设备与电路板的连接

描述USB转TTL的硬件设备:USB转TTL主机一台;芯片选用PL-2303HXUSB转TTL刷机线&#xff0c;采用进口PL2303HX芯片。连接上电脑并安装驱动后&#xff0c;电脑即扩展出一个COM3或COM4....等的串口&#xff0c;配合相应软件就能对路由器、机顶盒或接收机等各种TTL接口的设备系统进行…

php乱码调试,NotePad++ 调试PHP代码中文显示乱码

最近在NotePad上调试PHP代码&#xff0c;按照示例代码进行调试&#xff0c;结果在显示中文的时候显示一堆乱码&#xff0c;于是上网百度&#xff0c;有2种方法可以解决&#xff1a;按调试方式有2种方法&#xff1a;1、菜单插件-NppExec:“插件”-“NppExec”-"Console Out…

php怎么设置网站的字符编码,php如何设置字符编码

php如何设置字符编码&#xff1f;a. 如果欲使用gb2312编码&#xff0c;那么php要输出头&#xff1a;header(“Content-Type: text/html; charsetgb2312")&#xff0c;静态页面添加&#xff0c;所有文件的编码格式为ANSI&#xff0c;可用记事本打开&#xff0c;另存为选择编…