问题:这些砖块之间能够注入多少水?
解析:
1,取出这些砖块的最大高度和第二大高度
2。第二大高度乘上最大高度和第二大高度之间的距离。再减去中间的砖块,得出最大高度和第二大高度之间能够注入多少水
3。分别向最大高度和第二大高度之外的部分递归。得出最后的值

public class Main {public static int process(int[] wallHeights,int start, int end){ int result = 0;  //  终于结果//  firstIndex:第一高的墙在wallHeights中的索引//  secondIndex:第二高的墙在wallHeights中的索引int firstIndex = 0, secondIndex = 0;//  两堵墙必须至少有一堵墙的距离if (end - start <= 1)return 0;//  開始获取第一高和第二高墙的砖数//  冒泡for (int i = start+1; i <= end; i++){    if(wallHeights[i]>wallHeights[secondIndex]){if(wallHeights[i]>wallHeights[firstIndex]){//假设比第二大大又比第一大大,则i是第一大,第一大变成第二大secondIndex = firstIndex;firstIndex = i;}else{//假设比第二大大又比第一大小,则i是大二大。第一大不变secondIndex = i;} }}//  获取左側墙的索引int startIndex = Math.min(firstIndex, secondIndex);//  获取右側墙的索引int endIndex = Math.max(firstIndex, secondIndex);//  计算距离int distance = endIndex - startIndex;//  假设第一高的墙和第二高的墙之间至少有一堵墙,那么開始计算这两堵墙之间能够放多少个单位的水if (distance > 1){result = (distance - 1) * wallHeights[secondIndex];//  减去这两堵墙之间的砖数for (int i = startIndex + 1; i < endIndex; i++){result -= wallHeights[i];}}//  開始递归处理左側墙距离開始位置能放多少水return  result+process(wallHeights,start, startIndex)+process(wallHeights,endIndex, end);//  開始递归处理右側墙距离结束位置能放多少水}public static void main(String[] args){System.out.println( process(new int[]{0,1,0,2,1,0,1,3,2,1,2,1},0, 11));}}

注水问题(最多接水)相关推荐

  1. 算法--------数组--------容纳最多的水

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和(i, 0).找出其中的两条线,使 ...

  2. LeetCode--11.盛最多的水(双指针,暴力)

    盛最多的水(C) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 暴力穷举法 3.2 双指针法 1. 题目描述 难度:中等 2. 题目分析 该题目数字化之后可以这么理解: 给定数据[(a1, ...

  3. C++算法:.盛最多的水的容器:(双指针,夹逼法)

    leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode 题目: 给定 n 个非负整数 a1,a2,-,an,每个 ...

  4. 阿里终面:如何才能盛下最多的水?

    大家好,我是涛哥.又到周末了,愿大家开心. 今天不聊复杂的技术问题,来看一道阿里巴巴的终面题目.有趣,而且有一定难度. 编程求max{|i-j|*min{a[i], a[j]}}的值,其中a是正整数数 ...

  5. 【数据结构与算法】力扣实战之移动零、盛最多的水、爬楼梯

    练题法则 5-10分钟读题与思考 不要纠结没有思路就直接看题解: 不要死磕觉得自己很失败,怎么我们就想不出来: 基本上这些算法题,让我们自己想出来是不可能的: 拿跳表的来说,如果我们能从0-1把它想出 ...

  6. LeetCode求能够装得最多的水

    费了半天劲还是没想出来,然后跑到网上找答案,明白了是怎么回事儿了,就是不知道为啥自己没有想出来. 明天再搞~~~ 国庆快乐~~~ 一年了~~~~~ 明年今日~~我会在哪儿 =====2017.9.30 ...

  7. leetcode--盛最多水的容器--python

    文章目录 题目 题目详情 说明 示例 解题代码 思路 代码 运行结果 最佳方案 题目 题目详情 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n ...

  8. LeetCode实战:盛最多水的容器

    题目英文 Given n non-negative integers a1, a2, -, an, where each represents a point at coordinate (i, ai ...

  9. 漫画:腾讯面试题(盛最多水的容器)

    来自:小浩算法 01 PART 盛最多水的容器 这道题目会了的朋友可能觉得很简单,但是我觉得这题实在很经典,所以还是得拿出来讲讲.还有一个进阶版本"接雨水",将在后面为大家讲解. ...

最新文章

  1. csgo国服文件转国际服务器,csgo国际服怎么转国服 csgo国际服转到国服方法介绍...
  2. pythonのgevent同步异步区别
  3. gpg加密命令 linux_加密方案 GNUPG amp; Yubikey
  4. SAP Spartacus的defaultUrlMatcher
  5. java怎么输入数据_java怎么键盘输入数据啊?
  6. 轻量化网络:ShuffleNet V2
  7. pytorch 入门学习处理多维特征输入-7
  8. win10好用的软件推荐
  9. 酒店消防安全知识培训PPT模板
  10. 苹果电脑怎么断网?你会断网吗? Mac电脑断网方法
  11. 解决Ubuntu20.04插入英伟达计算卡后无法开机问题-Ubuntu双显卡切换
  12. Excel函数教程,if函数的使用方法
  13. 【PowerDesigner】UML建模
  14. 修改后的小米文件管理器(去掉远程管理)
  15. 20145212 罗天晨 《网络对抗》Exp3 Advanced 恶意代码伪装技术实践
  16. Git学习笔记及一些问题(廖雪峰版)
  17. 多线程socket通信server
  18. 2018-07-11CROSS JOIN+INNER JOIN+LEFT JOIN+RIGHT JOIN
  19. 微信小程序picker组件仅点击其中的内容才会触发事件
  20. 免疫算法(matlab)---求数的平方和

热门文章

  1. CSTrack: Rethinking the competition between detection and ReID in Multi-Object Tracking
  2. APP抓包——Fiddler工具
  3. 起底差价合约发展简史,什么样的外汇交易平台值得你选择?
  4. 什么是前端,后端???什么是后台???
  5. 九章头条-----青龙毛毛(5.31更新)
  6. HBase基本架构及原理
  7. 让自己做得更好的几句格言
  8. 2021-10-28 Exhaustive-match.hdev注释
  9. 嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果
  10. 什么是版本控制?为什么要有版本控制?常用的版本控制工具有哪些?