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

简介: “在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]” “假如开始下雨了,那么墙之间的水坑能够装多少水呢?” 解决思路: 1 初始化左指针为元素0的值,初始化右指针为元素size-1的值。 2 如果(左指针找到的左指针以左的最大值)小于(右指针找到右指针以右的最大值),将左指针向右移


“在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[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

目录
相关文章
|
存储 分布式计算 区块链
朋友圈技术范儿装X指南-有向无环图
朋友圈技术范儿装X指南-有向无环图
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱8(附带项目源码)
45 1
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱3(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱3(附带项目源码)
29 0
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)
61 0
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱5(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱5(附带项目源码)
26 0
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱1(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱1(附带项目源码)
88 0
|
6月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱11(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱11(附带项目源码)
31 0
|
定位技术 图形学
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)
|
人工智能 算法 固态存储
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
142 0
|
分布式计算 大数据 MaxCompute
三七女生节,看程序媛们选好口红色号,踩上高跟鞋,特别美丽,特别凶狠,特别温柔~
口红,尿不湿,代码;撒娇,卖萌,撕叉;烈焰红唇倾斜45度角写代码;我爱你,你用知性保持着最致命的吸引力!
2114 0