博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Trapping Rain Water
阅读量:4151 次
发布时间:2019-05-25

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

class Solution {//O(n)//find the highest bar as one end of the wall//then check left side from left to right, //record the left most high height "h" along the way, //if A[i] < h && A[i] < A[mid], then A[i] contribute h-A[i] water//right side dittopublic:	int trap(int A[], int n) {		// Start typing your C/C++ solution below		// DO NOT write int main() function		if (!A || !n) 			return 0;		int mid = 0, water = 0, h = 0;		for (int i = 0; i < n; ++i) 		{			if (A[i] > A[mid])				mid = i;		}		for (int i = 0; i < mid; ++i)//check left		{			if (h > A[i])				water += h - A[i];			else				h = A[i];		}		h = 0;		for (int i = n - 1; i > mid; --i)//check right		{			if (h > A[i])				water += h - A[i];			else				h = A[i];		}		return water;	}};

second time

class Solution {//stack based solutionpublic:    struct Node    {        int h, len;        Node(int _h = 0, int _len = 0):h(_h), len(_len){};    };    int trap(int A[], int n) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int areaSum = 0;        stack
S; S.push(Node(0, 0)); for(int i = 0; i < n; ++i) { if(A[i] < S.top().h) { S.push(Node(A[i], 1)); continue; } int curLen = 0; int heightSum = 0; while(S.size() > 1 && A[i] >= S.top().h) { curLen += S.top().len; heightSum += S.top().h*S.top().len; S.pop(); } int minHeight = min(S.top().h, A[i]); int curArea = minHeight*curLen-heightSum; areaSum += curArea; if(A[i] > S.top().h) { S.pop(); S.push(Node(A[i], 0)); } else S.push(Node(A[i], curLen+1)); } return areaSum ; }};

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

你可能感兴趣的文章
让代码变得更优雅-Lombok
查看>>
liquibase的使用
查看>>
代码生成器-mybatis-generator的使用
查看>>
Lambda表达式之List的常用方法
查看>>
lambda 表达式遍历map和list
查看>>
全局异常处理代码
查看>>
sql分组取组内的最新数据
查看>>
Java入门之编程基础(一)
查看>>
Java入门之编程基础(二)
查看>>
Java入门之编程基础(三)
查看>>
Java入门之编程基础(四)
查看>>
Java入门之编程基础(五)
查看>>
Java入门之面对对象
查看>>
Java入门之API的使用及String 和StringBuilder类的常见方法
查看>>
Java入门之对象数组及集合概述
查看>>
Java入门之IO流(输入流和输出流)
查看>>
Java编程案例之学生管理系统
查看>>
Java SE之静态和代码块
查看>>
关于webService的一些理解
查看>>
项目管理工具的使用
查看>>