当前位置:网站首页>Leetcode daily question (1162. as far from land as possible)
Leetcode daily question (1162. as far from land as possible)
2022-07-03 09:33:00 【wangjun861205】
Given an n x n grid containing only values 0 and 1, where 0 represents water and 1 represents land, find a water cell such that its distance to the nearest land cell is maximized, and return the distance. If no land or water exists in the grid, return -1.
The distance used in this problem is the Manhattan distance: the distance between two cells (x0, y0) and (x1, y1) is |x0 - x1| + |y0 - y1|.
Example 1:
Input: grid = [[1,0,1],[0,0,0],[1,0,1]]
Output: 2
Explanation: The cell (1, 1) is as far as possible from all the land with distance 2.
Example 2:
Input: grid = [[1,0,0],[0,0,0],[0,0,0]]
Output: 4
Explanation: The cell (2, 2) is as far as possible from all the land with distance 4.
Constraints:
n == grid.length
n == grid[i].length
1 <= n <= 100
grid[i][j] is 0 or 1
impl Solution {
pub fn max_distance(mut grid: Vec<Vec<i32>>) -> i32 {
for i in 0..grid.len() {
for j in 0..grid[0].len() {
if grid[i][j] == 0 {
grid[i][j] = i32::MAX;
continue;
}
grid[i][j] = 0;
}
}
loop {
let mut modified = false;
for i in 0..grid.len() {
for j in 0..grid[0].len() {
let top = if i > 0 {
grid[i - 1][j] } else {
i32::MAX };
let bottom = if i < grid.len() - 1 {
grid[i + 1][j]
} else {
i32::MAX
};
let left = if j > 0 {
grid[i][j - 1] } else {
i32::MAX };
let right = if j < grid[0].len() - 1 {
grid[i][j + 1]
} else {
i32::MAX
};
let base = top.min(bottom).min(left).min(right);
if base == i32::MAX {
continue;
}
if grid[i][j] > base + 1 {
grid[i][j] = base + 1;
modified = true;
}
}
}
if !modified {
break;
}
}
let ans = grid
.into_iter()
.map(|row| row.into_iter().max().unwrap())
.max()
.unwrap();
if ans == 0 || ans == i32::MAX {
return -1;
}
ans
}
}
边栏推荐
- Quickly use markdown to edit articles
- Build a solo blog from scratch
- LeetCode每日一题(2212. Maximum Points in an Archery Competition)
- QT qstring:: number apply base conversion
- Go language - Reflection
- Jetson Nano 自定义启动图标kernel Logo cboot logo
- Starting from 0, use pnpm to build a demo managed by monorepo
- Utilisation de hudi dans idea
- Spark structured stream writing Hudi practice
- Global KYC service provider advance AI in vivo detection products have passed ISO international safety certification, and the product capability has reached a new level
猜你喜欢
LeetCode每日一题(2212. Maximum Points in an Archery Competition)
Arduino handles JSON data, arduinojson assistant
Principles of computer composition - cache, connection mapping, learning experience
Computing level network notes
Hudi quick experience (including detailed operation steps and screenshots)
The rise and fall of mobile phones in my perspective these 10 years
Idea uses the MVN command to package and report an error, which is not available
Crawler career from scratch (II): crawl the photos of my little sister ② (the website has been disabled)
Hudi learning notes (III) analysis of core concepts
[point cloud processing paper crazy reading classic version 13] - adaptive graph revolutionary neural networks
随机推荐
【Kotlin学习】运算符重载及其他约定——重载算术运算符、比较运算符、集合与区间的约定
IDEA 中使用 Hudi
【Kotlin学习】类、对象和接口——带非默认构造方法或属性的类、数据类和类委托、object关键字
307. Range Sum Query - Mutable
Flink-CDC实践(含实操步骤与截图)
Spark 概述
Leetcode daily question (516. long palindromic subsequence)
Starting from 0, use pnpm to build a demo managed by monorepo
Learning C language from scratch -- installation and configuration of 01 MinGW
Liteide is easy to use
Explanation of the answers to the three questions
Installation and uninstallation of pyenv
LeetCode每日一题(2305. Fair Distribution of Cookies)
Flink学习笔记(九)状态编程
unbuntu(debian)下TFTP服务器搭建及测试
Nodemcu-esp8266 development (vscode+platformio+arduino framework): Part 2 --blinker_ Hello_ WiFi (lighting technology - Mobile App control routine)
全球KYC服务商ADVANCE.AI 活体检测产品通过ISO国际安全认证 产品能力再上一新台阶
There is no open in default browser option in the right click of the vscade editor
Logstash+jdbc data synchronization +head display problems
Vscode Arduino installation Library