286. Walls and Gates

DFS: 思路是,搜索0的位置,每找到一个0,以其周围四个相邻点为起点,开始 DFS 遍历,并带入深度值1,如果遇到的值大于当前深度值,将位置值赋为当前深度值,并对当前点的四个相邻点开始DFS遍历,注意此时深度值需要加1

class Solution {
public void wallsAndGates(int[][] rooms) {
for(int i = 0; i < rooms.length; i++){
for(int j = 0; j < rooms[0].length; j++){
if(rooms[i][j] == 0) dfs(rooms, i, j, 0);
}
}
} private void dfs(int[][] rooms, int i, int j, int depth){
if(i < 0 || i >= rooms.length || j < 0 || j >= rooms[0].length || rooms[i][j] < depth)
return;
rooms[i][j] = depth;
dfs(rooms, i + 1, j, depth + 1);
dfs(rooms, i - 1, j, depth + 1);
dfs(rooms, i, j + 1, depth + 1);
dfs(rooms, i, j - 1, depth + 1);
}
}

339. Nested List Weight Sum

class Solution {
public int depthSum(List<NestedInteger> nestedList) {
if(nestedList == null || nestedList.size() == 0) return 0;
return dfs(nestedList, 1);
} private int dfs(List<NestedInteger> nestedList, int depth){
int sum = 0;
for(NestedInteger ni : nestedList){
if(ni.isInteger()){
sum += depth * ni.getInteger();
}else{
sum += dfs(ni.getList(), depth + 1);
}
}
return sum;
}
}

364. Nested List Weight Sum II

这题要求权重随着层数增加而减少,用BFS,每一层都先把Integer添加到level中,当这层循环结束时level添加进sum中,但是level不归零,上一层的Integer还在level中,所以每多一层就要多计算一次。

class Solution {
public int depthSumInverse(List<NestedInteger> nestedList) {
if(nestedList == null || nestedList.size() == 0) return 0;
Queue<NestedInteger> q = new LinkedList<>();
q.addAll(nestedList);
int sum = 0, level = 0; while(!q.isEmpty()){
int size = q.size();
while(size-- > 0){
NestedInteger ni = q.poll();
if(ni.isInteger()){
level += ni.getInteger();
}else{
q.addAll(ni.getList());
}
}
sum += level;
}
return sum;
}
}

<DFS & BFS> 286 339 (BFS)364的更多相关文章

  1. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  2. 图的深度优先遍历(DFS)和广度优先遍历(BFS)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  3. 深度优先搜索DFS和广度优先搜索BFS简单解析

    转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...

  4. BFS、双向BFS和A*

    BFS.双向BFS和A* Table of Contents 1. BFS 2. 双向BFS 3. A*算法 光说不练是无用的.我们从广为人知的POJ 2243这道题谈起:题目大意:给定一个起点和一个 ...

  5. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  6. HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  8. 【C++】基于邻接矩阵的图的深度优先遍历(DFS)和广度优先遍历(BFS)

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  9. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

随机推荐

  1. 1.Ansible自动化管理工具

    1.Ansible基本概述 Ansible是一个IT自动化的配置管理工具,自动化主要体现在Ansible集成了丰富模块,丰富的功能组件, 可以通过一个命令行完成一系列的操作.进而能减少我们重复性的工作 ...

  2. 一个神奇的HTML标签-----marquee

    今天无意中发现了一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 语法:<marquee>...</marqu ...

  3. C++ --内存四区概述

    内存四区 代码区:存放函数体第二进制代码,由操作戏台进行管理 数据区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不是放 ...

  4. 任正非讲话稿 PDF整理版

    任正非讲话稿 PDF整理版 任正非思想之路 这里收录了任正非讲话稿400余篇,从1994年到2018年,从深圳.中国到东南亚.非洲.欧洲.美洲,从研发.市场.服务到财经.人力资源.战略.内控与公共关系 ...

  5. Java_枚举Enum基本使用

    特性 在某些情况下,一个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类: 在 Java 中使用 enum 关键字来定义枚举类,其地位与 c ...

  6. LeetCode刷题--整数反转(简单)

    题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 12 ...

  7. JS表单内容垂直循环滚动

    参考博客:https://blog.csdn.net/yubo_725/article/details/52839493  大佬是真的厉害,保存一下,以方便后续使用 效果: 源码: <!DOCT ...

  8. javascript es6 Promise 异步同步的写法(史上最简单的教程了)

    1 来个简单的例子 var p = new Promise(function(resolve, reject){ //做一些异步操作 setTimeout(function(){ console.lo ...

  9. button的onclick事件给函数传递参数

    ul+='<button onclick="pay(\''+regiId+'\')" >按钮</button>' //此为原生JS页面拼接//此方式的关键就 ...

  10. Element-ui 下拉列表 选项过多时通过自定义搜索来解决卡顿问题

    当使用Select选择器时,如果下拉列表的数据量太多,会有一个明显的卡顿体验,例如: <!DOCTYPE html> <html lang="en"> &l ...