接雨水 II-LintCode
来源:互联网 发布:eia数据怎么看 编辑:程序博客网 时间:2024/04/28 08:15
Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 x 1, compute how much water it is able to trap after raining.
例如,给定一个 5*4 的矩阵:
[
[12,13,0,12],
[13,4,13,12],
[13,8,10,12],
[12,13,12,12],
[13,13,13,13]
]
返回 14.
#ifndef C364_H#define C364_H#include<iostream>#include<vector>#include<functional>#include<queue>using namespace std;class Solution {public: /* * @param heights: a matrix of integers * @return: an integer */ int trapRainWater(vector<vector<int>> &heights) { // write your code here if (heights.empty()) return 0; int num = 0; int Max = 0; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> que; int row = heights.size(); int col = heights[0].size(); vector<vector<int>> visited(row, vector<int>(col, 0)); for (int i = 0; i < row; ++i) { for (int j = 0; j < col; ++j) { if (!(i == 0 || j == 0 || i == row - 1 || j == col - 1)) continue; visited[i][j] = 1; que.push(make_pair(heights[i][j], i*col + j)); } } while (!que.empty()) { auto pairVal = que.top(); que.pop(); int height = pairVal.first; Max = max(height, Max); int xp = pairVal.second / col; int yp = pairVal.second%col; vector<vector<int>> boundry{ { -1, 0 }, { 0, -1 }, { 1, 0 }, { 0, 1 } }; for (auto c : boundry) { int Xp = xp + c[0]; int Yp = yp + c[1]; if (Xp < 0 || Yp < 0 || Xp >= row || Yp >= col||visited[Xp][Yp]) continue; visited[Xp][Yp] = 1; que.push(make_pair(heights[Xp][Yp], Xp*col + Yp)); if (heights[Xp][Yp] < Max) num += Max - heights[Xp][Yp]; } } return num; }};#endif
阅读全文
0 0
- 接雨水 II-LintCode
- LintCode-接雨水
- LintCode:接雨水
- LintCode:接雨水
- 接雨水 lintcode
- lintcode[363]:接雨水
- LintCode:M-接雨水
- 接雨水-LintCode
- LintCode rain trap 接雨水
- [LintCode 363] 接雨水(Python)
- 雨水,lintcode
- **[Lintcode]Trapping Rain Water 接雨水
- lintcode刷题——接雨水
- 接雨水
- 接雨水
- 接雨水
- 接雨水问题(C++)
- 接雨水问题
- [ java swing derby开发pc应用 ] 从零到上线(一)
- Maven依赖Scope标签用法
- BZOJ 4327 【JSOI 2012】 玄武密码 AC自动机+dfs
- 016(2) 函数连续性及 e x-1 ~x 及 ln(1+x)~x的证明
- MySQL数据库出现闪退的情况
- 接雨水 II-LintCode
- IO(JAVA/python版)
- Scientific Toolworks Understand for linux 的下载
- Android消息机制中ThreadLocal的认识
- 属性动画核心知识详解
- 光合作用 (二分)
- BZOJ 2064 浅谈状态压缩动态规划基础及lowbit枚举子集和
- 接口测试工具
- Ubuntu 16 Ros Google slam.docx