[twitter] 墙之间的水坑能够装多少水

“在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]”

“假如开始下雨了,那么墙之间的水坑能够装多少水呢?”

解决思路:

1 初始化左指针为元素0的值,初始化右指针为元素size-1的值。

2 如果(左指针找到的左指针以左的最大值)小于(右指针找到右指针以右的最大值),将左指针向右移动一位。否则右指针向左移动一位。重复过程直到两个指针相遇。

实现代码:

#include <iostream>
using namespace std;
int Calc(int[], int);
int main()
{
	int testcase_1[] = {2,5,1,2,3,4,7,7,6};
	int testcase_2[] = {2,5,1,3,1,2,1,7,7,6};
	int testcase_3[] = {6,1,4,6,7,5,1,6,4};
	int testcase_4[] = {1,2,4,6,7,8,7,6,4};
	cout<<Calc(testcase_1,9)<<endl;
	cout<<Calc(testcase_2,10)<<endl;
	cout<<Calc(testcase_3,9)<<endl;
	cout<<Calc(testcase_4,9)<<endl;
}

int Calc(int a[], int size)
{
	int left = 0;
	int right = size - 1;
	int max_left = a[left];
	int max_right = a[right];
	int sum = 0;
	while(left < right)
	{
		if (a[left] < a[right])
		{
			left++;
			if (a[left] > max_left)
			{
				max_left = a[left];
			}
			else
			{
				sum += max_left - a[left];
			}
		}
		else
		{
			right--;
			if (a[right] > max_right)
			{
				max_right = a[right];
			}
			else
			{
				sum += max_right - a[right];
			}
		}
	}

	return sum;
}

输出结果:

10

17

13

0

时间: 2024-09-20 14:59:04

[twitter] 墙之间的水坑能够装多少水的相关文章

雪碧瓶里装消毒水端上桌消费者食道被灼伤

餐厅女食客喝了一口,食道被灼伤:是餐厅的问题,是批发商的问题,还是厂家的问题? "刚打开的雪碧竟是一瓶含氯的消毒水!"福州的林小姐不慎饮入,结果呕吐不止.随后,被医生初步诊断为喝了含氯的消毒液,食道被灼伤,需要治疗查看.这让和林小姐一起聚餐的同事唏嘘不已. 当事人:雪碧竟成消毒水 当事人林小姐说,昨天晚上7时30分许,他们同事10人一起到温泉公园路福州广场入口处一家名为"AKI秋·日本料理"的餐厅聚餐.席间,一位男同事点了瓶冰的雪碧.服务人员很快就送来一瓶1.25升

一道关于数组的算法题目,请用java实现。

问题描述 一道关于数组的算法题目,请用java实现. 在这个图片里我们有不同高度的墙.这个图片由一个整数数组所代表,数组中每个数是墙的高度.上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]. 假如开始下雨了,那么墙之间的水坑能够装多少水呢? 请用java实现(任意数组求出结果) 解决方案 参考这三个贴 http://www.cnblogs.com/xiangnan/archive/2013/11/01/3402467.html http://blog.jobbole.com/5070

算法实践——Twitter算法面试题(积水问题)的线性时间解法

问题描述:在下图里我们有不同高度的挡板.这个图片由一个整数数组所代表,数组中每个数是墙的高度.下图可以表示为数组(2.5.1.2.3.4.7.2).假如开始下雨了,那么挡板之间的水坑能够装多少水(水足够多)呢?   下图是装满水的情况,一个蓝色格子代表一个单位的水.下图中一共装了10个单位的水.     问题分析:   先看看下图,判断哪个单元格的水能留下来.下图中的两个单元格,一个红色的单元格和一个绿色的单元格,哪个单元格的水是溜走了,哪个单元格的水能留下来? 很明显的,上图中的红色单元格的水

一个twitter puddles的算法实现

今天发现了一个挺好玩的算法题,下面是它的算法描述,源自twitter的一道面试题 twitter puddles 算法描述 数字是根据一个数组内容来描述的,最后会根据每个数字的大小来模拟一道墙的高度,最后生成一面墙,问你,当下雨的时候,这面墙可以装多少水,以1为计数单位 其实这个原理比较简单,总共有下面几个要点: 最左边和最右边肯定不能装水 装水的高度依赖自身左右两侧内两个最大值其中的最小值 下面我们用js来简单的实现它 /** * 计算以数组项为高度的墙能装多少水 * 数组例子 [2,5,1,

JavaScript实现twitter puddles算法实例_javascript技巧

今天发现了一个挺好玩的算法题,下面是它的算法描述,源自twitter的一道面试题. twitter puddles 算法描述 先看一副图 上图里的数字是根据一个数组内容来描述的,最后会根据每个数字的大小来模拟一道墙的高度,最后生成一面墙,问你,当下雨的时候,这面墙可以装多少水,以1为计数单位. 下面是装完水之后的一面墙的样子 看完上面上幅图,感觉是不是很好玩,确实,下面来简单的分析下它的算法实现 其实这个原理比较简单,总共有下面几个要点: 1.最左边和最右边肯定不能装水 2.装水的高度依赖自身左

Twitter算法面试题详解(Java实现)

最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看这个图.可以将方块看做砖.题干很简单,问最多能放多少水.例如,图2就是图1可放的最多水(蓝色部分),如果将一块砖看做1的话,图2就是能放10个单位的水. 图2 再看个例子 图3 图3可以放17个单位的水. 上面每一个图的砖墙用int数组表示,每一个数组元素表示每一列砖墙的砖数(高度),例如,图3用数组表示就是int[] w

从SEO相关性分析是谷歌影响Twitter或反之亦然

有一件事是SEO从业人士纷纷效仿,楔形,研究,想知道和失去seo对Twitter趋势有什么影响?是消极的营销还是积极的营销,是谷歌影响Twitter还是Twitter影响谷歌?这让笔者想起了鸡和鸡蛋的想法. 与互联网互通的Web交互时代,重要的是要知道社交网站所带来的效果,如Twitter,Twitter,谷歌+,LinkedIn或Pinterest对你的特定关键词排名和搜索次数所带来的效果影响有哪些?在本篇文章中我们主要关注Twitter为了关联改变搜索行为和数量一个搜索词在Twitter上的

Twitter,是否是下一个《虚拟人生》?

如果我的言行得罪了你们这些忠实的Twitter用户,请多见谅.关于Twitter走向企业的一些文章令我感到不安,在此,我想谈一些看法. 在过去一年或是更长一些时间以来,我对此问题一直保持沉默.但是,现在,关于Twitter走向企业市场以及http://www.aliyun.com/zixun/aggregation/17372.html">第二人生的过分宣传报道不断见诸于报端. 还记得第二人生吗?许多企业在这个虚拟世界花巨资打造自己的岛屿,设想能以现金方式进行虚拟交易.不幸的是,虚拟人生网

Twitter开始测试新版首页 最热门消息动态更新

http://www.aliyun.com/zixun/aggregation/17197.html">北京时间3月31日早间消息,据国外媒体报道,微博客网站Twitter周二宣布开始测试新版首页,新版首页上加入了Twitter网站中的更多信息. Twitter去年就开始对首页进行重新设计,使用户更方便的使用搜索和趋势主题功能.在上一次改版中,Twitter在首页上增加了搜索功能,使没有注册Twitter的用户也可以使用Twitter服务. 在新版首页中,Twitter加入了更多动态内容,