当前位置:网站首页>Sword finger offer II 107 Distance in matrix
Sword finger offer II 107 Distance in matrix
2022-07-07 09:48:00 【PI Qiliang】
The finger of the sword Offer II 107. The distance in the matrix 【 Medium question 】
Ideas :
use BFS Sequence traversal , Find all the elements 0, From element 0 Start sequence traversal in four directions , set up ans The array stores the latest 0 distance , be ans in ,mat Matrix elements 0 The position value is 0, Encountered during traversal of each layer 1 Will ans Value is updated to element 0 Of ans value +1
Code :
class Solution {
static int[][] ans;
static int[][] dir = {
{
0,-1},{
0,1},{
-1,0},{
1,0}};
static int m,n;
public static int[][] updateMatrix(int[][] mat) {
m = mat.length;
n = mat[0].length;
// Mark mat matrix (i,j) Whether the location element has been searched
boolean[][] seen = new boolean[m][n];
// Storage mat In the matrix 0 The position coordinates of
Queue<int[]> queue = new LinkedList<>();
// Storage mat matrix (i,j) The nearest location element 0 Distance of
ans = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (mat[i][j] == 0){
// take mat The elements in the matrix 0 The position coordinates of are pressed into the queue
queue.offer(new int[]{
i,j});
// The current location of the tag has been searched
seen[i][j] = true;
}
}
}
//BFS Traverse , When the element in the stack is empty , The loop ends
while(!queue.isEmpty()){
// Take out the top element of the queue 0 The location of
int[] cell = queue.poll();
// Take out the elements 0 Coordinates of
int i = cell[0],j = cell[1];
for (int k = 0; k < 4; k++) {
// The element 0 Search up, down, left and right , The location coordinates searched are (x,y)
int x = i + dir[k][0],y = j + dir[k][1];
// If (x,y) Does not exceed the matrix boundary and (x,y) The location has not been searched
if (x >= 0 && x < m && y >= 0 && y < n && !seen[x][y]){
//ans Of (x,y) Position value be equal to ans Of (i,j) Position value + 1
ans[x][y] = ans[i][j] + 1;
// take (x,y) Position push into queue
queue.offer(new int[]{
x,y});
// take (x,y) The location is marked as searched
seen[x][y] = true;
}
}
}
return ans;
}
}
边栏推荐
- Information Security Experiment 2: using x-scanner scanning tool
- Selenium+bs4 parsing +mysql capturing BiliBili Tarot data
- Flex flexible layout
- CDZSC_2022寒假个人训练赛21级(2)
- 章鱼未来之星获得25万美金奖励|章鱼加速器2022夏季创业营圆满落幕
- CentOS installs JDK1.8 and mysql5 and 8 (the same command 58 in the second installation mode is common, opening access rights and changing passwords)
- How to use Mongo shake to realize bidirectional synchronization of mongodb in shake database?
- 洛谷P2482 [SDOI2010]猪国杀
- How to solve the problem of golang select mechanism and timeout
- 战略合作|SubQuery 成为章鱼网络浏览器的秘密武器
猜你喜欢
沙龙预告|GameFi 领域的瓶颈和解决方案
基于智慧城市与储住分离数字家居模式垃圾处理方法
Detailed explanation of diffusion model
Use 3 in data modeling σ Eliminate outliers for data cleaning
[Frida practice] "one line" code teaches you to obtain all Lua scripts in wegame platform
【无标题】
Lesson 1: finding the minimum of a matrix
Information Security Experiment 1: implementation of DES encryption algorithm
其实特简单,教你轻松实现酷炫的数据可视化大屏
CentOS installs JDK1.8 and mysql5 and 8 (the same command 58 in the second installation mode is common, opening access rights and changing passwords)
随机推荐
Unity shader (basic concept)
thinkphp3.2信息泄露
Database multi table Association query problem
数据库多表关联查询问题
[4g/5g/6g topic foundation -147]: Interpretation of the white paper on 6G's overall vision and potential key technologies -2-6g's macro driving force for development
First issue of JS reverse tutorial
Loxodonframework quick start
【无标题】
Selenium+bs4 parsing +mysql capturing BiliBili Tarot data
Elaborate on MySQL mvcc multi version control
Natapp intranet penetration
thinkphp数据库的增删改查
剑指 Offer II 107. 矩阵中的距离
Liunx command
其实特简单,教你轻松实现酷炫的数据可视化大屏
CDZSC_2022寒假个人训练赛21级(2)
MySQL can connect locally through localhost or 127, but cannot connect through intranet IP (for example, Navicat connection reports an error of 1045 access denied for use...)
C# Socke 服务器,客户端,UDP
flink. CDC sqlserver. 可以再次写入sqlserver中么 有连接器的 dem
La différence entre viewpager 2 et viewpager et la mise en œuvre de la rotation viewpager 2