题目如下:

解题思路:本题题干中提到了一个非常重要的前提:"You can swim infinite distance in zero time",同时也给了一个干扰条件,那就是示例2里面的说明,"We need to wait until time 16 so that (0, 0) and (4, 4) are connected."。那么,游泳的人是否需要先游到(1,4)这个点然后等待到time16呢?把问题简化一下,游泳者可以直接在(0,0)等待到time16,这样问题就变成了在什么时间点,游泳的人可以从起点游到终点。在某一特定时间点,矩阵中所有大于这个时间的元素认为是障碍,这样是不是就是一个迷宫问题了?至于怎么找到最小的时间点,首先可以确定,最大的时间是矩阵中值最大的元素,最小的时间是起点元素和终点元素的较大值。显然,用二分查找非常合适。

代码如下:

class Solution(object):
def canReach(self,time,matrix):
tl = [0] * len(matrix[0])
visit = []
for i in matrix:
visit.append(tl[:])
row = len(matrix)
column = len(matrix[0])
queue = [(0,0)]
visit[0][0] = 1
while len(queue) > 0:
x,y = queue.pop(0)
#print x,y
if x == row-1 and y == column-1:
return True
if x - 1 >= 0 and matrix[x-1][y] <= time and visit[x-1][y] == 0:
queue.append((x-1,y))
visit[x-1][y] = 1
if x + 1 < row and matrix[x+1][y] <= time and visit[x+1][y] == 0:
queue.append((x+1,y))
visit[x+1][y] = 1
if y - 1 >= 0 and matrix[x][y-1] <= time and visit[x][y-1] == 0:
queue.append((x,y-1))
visit[x][y-1] = 1
if y + 1 < column and matrix[x][y+1] <= time and visit[x][y+1] == 0:
queue.append((x,y+1))
visit[x][y+1] = 1
return False def swimInWater(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
low = max(grid[0][0],grid[-1][-1])
high = low
for i in grid:
for j in i:
high = max(j,high)
res = len(grid)*len(grid)
while low <= high:
mid = (low + high) / 2
if self.canReach(mid,grid) == True:
res = min(res,mid)
high = mid - 1
else:
low = mid + 1
return res

【leetcode】778. Swim in Rising Water的更多相关文章

  1. 【LeetCode】778. Swim in Rising Water 水位上升的泳池中游泳(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/swim-in- ...

  2. LeetCode 778. Swim in Rising Water

    题目链接:https://leetcode.com/problems/swim-in-rising-water/ 题意:已知一个n*n的网格,初始时的位置为(0,0),目标位置为(n-1,n-1),且 ...

  3. 【LeetCode】11. Container With Most Water 盛最多水的容器

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:盛水,容器,题解,leetcode, 力扣,python ...

  4. 【LeetCode】11. Container With Most Water

    题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...

  5. 778. Swim in Rising Water

    ▶ 给定方阵 grid,其元素的值为 D0n-1,代表网格中该点处的高度.现在网格中开始积水,时刻 t 的时候所有值不大于 t 的格点被水淹没,当两个相邻格点(上下左右四个方向)的值都不超过 t 的时 ...

  6. 【LeetCode】011 Container With Most Water

    题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...

  7. 【LeetCode】代码模板,刷题必会

    目录 二分查找 排序的写法 BFS的写法 DFS的写法 回溯法 树 递归 迭代 前序遍历 中序遍历 后序遍历 构建完全二叉树 并查集 前缀树 图遍历 Dijkstra算法 Floyd-Warshall ...

  8. 【LeetCode】堆 heap(共31题)

    链接:https://leetcode.com/tag/heap/ [23] Merge k Sorted Lists [215] Kth Largest Element in an Array (无 ...

  9. 【LeetCode】并查集 union-find(共16题)

    链接:https://leetcode.com/tag/union-find/ [128]Longest Consecutive Sequence  (2018年11月22日,开始解决hard题) 给 ...

随机推荐

  1. 单页应用 cookies处理

    w Node & 单页应用 来做一个完整用户系统吧! - harryfyodor的前端专栏 - SegmentFaulthttps://segmentfault.com/a/119000000 ...

  2. 【tensorflow使用笔记一】:安装linux下tensorflow环境的问题

    首先安装Python Python2.7 使用pip安装Python-numpy发现有老版本影响import直接手动删除: 安装default-jdk顺利: 安装matplotlib发现没有tkint ...

  3. 从 2017 OpenStack Days China 看国内云计算的发展现状

    目录 目录 China Runs On OpenStack 私有云正式迈入成熟阶段 混合云的前夜已经来临 China Runs On OpenStack OpenStack Days China 作为 ...

  4. vue组件间通信子与父

    二.组件间通信(子组件传值给父组件) 通过事件的方式来完成数据的传输. ①在父组件中 定义一个方法,用来接收子组件所通过事件传来的值 methods:{ recvMsg:function(msg){ ...

  5. LeetCode——160 Intersection of Two Linked Lists

    题目 Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 Output: ...

  6. Reverse Linked List(反转单向链表)

    来源:https://leetcode.com/problems/reverse-linked-list Reverse a singly linked list. 递归方法:递归调用直到最后一个节点 ...

  7. java项目中,针对缓存问题的处理方式【接口中的处理方式】

    1.在service包中,分别建立了关于缓存的一系列的接口.类等,封装到一个工具包中: 临时缓存的接口(代码部分): package com.tools; import java.util.Date; ...

  8. win10系统Mysql5.7服务启动报:"1053错误:服务没有及时响应启动或控制请求"

    win10安装Mysql5.7: MySQL压缩包解压后,在目录下增加my.ini配置文件 [mysqld] port = basedir=D:\Mysql datadir=D:\Mysql\data ...

  9. 第二次java面试(用友山东济南分公司)

    坐标:山东潍坊公共实训基地 面试单位:用友济南分公司(来了一位HR和技术经理) 本人状态:距离离校15天 宣讲: 1.女HR和男技术经理来到我们专业提前准备好的教室,先宣传海报和发传单,然后看了4个3 ...

  10. Django之视图(V)

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...