博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
No.50 - leetCode407- 二维蓄水-边界水面上升-很难
阅读量:4058 次
发布时间:2019-05-25

本文共 897 字,大约阅读时间需要 2 分钟。

尝试过DFS搜索最小边界写这道题,很麻烦,总有反例。


正手应该是模拟水面上升,比较容易懂。

随着水面上升,

从边界一点点往内部渗透,
当成功渗透内部单元后,
内部单元成为新的边界。

class Solution {public: struct Node{    int h;    int x;    int y;    Node(int a,int b,int c):h(a),x(b),y(c){};    bool operator < (const Node a) const{        if(a.h < this->h) return true;        return false;    }};int trapRainWater(vector
>& heightMap) { int R = heightMap.size(); if( R <= 2) return 0; int C = heightMap[0].size(); if( C <= 2) return 0; priority_queue
> q; vector
> v(R,vector
(C,0)); const int dirx[] = {-1,0,1,0}; const int diry[] = {0,1,0,-1}; for(int i=0;i
= R-1 || c < 1 || c >= C-1 || v[r][c]) continue; v[r][c] = 1; if(heightMap[r][c] < mWall){ ans += mWall - heightMap[r][c]; heightMap[r][c] = mWall; } q.push(*(new Node(heightMap[r][c],r,c))); } } return ans;}};

转载地址:http://uiwji.baihongyu.com/

你可能感兴趣的文章
入门卷积神经网络必备,基础、理论、实战一网打尽!
查看>>
Java报错:No enclosing instance of type learnJ is accessible.
查看>>
java学习(2)类变量与实例变量
查看>>
java学习(3)类的四大特性1
查看>>
java学习(4)类的四大特性2之继承
查看>>
java学习(5)类的四大特性2之继承(方法重载)
查看>>
java学习(6)类的四大特性2之继承(方法覆盖)
查看>>
java学习(7)类的四大特性2之继承(抽象类)
查看>>
java学习(8)类的四大特性2之继承(接口)
查看>>
java学习(9)类的四大特性2之继承(final)
查看>>
java学习(10)数组
查看>>
java学习(11)位与进制
查看>>
java学习(12)集合(1)
查看>>
java学习(13)集合(2)
查看>>
java学习(14)集合(3)
查看>>
java学习(15)泛型
查看>>
java学习(16)异常处理
查看>>
java学习(17)图形用户界面(1)
查看>>
java学习(18)图形用户界面(2)
查看>>
java学习(19)图形用户界面(3)
查看>>