常考数据结构与算法:容器盛水问题
题目描述
给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多少水。
示例
输入
[3,1,2,5,2,4]
返回值
5
思路
能装多少水是由左右两边较低的边决定的,因此采用双指针,从开头和最后向中间靠拢,当位置i的数小于较低边表示可以装水。当位置i的数大于较低边时,更新较低边为位置i的值。
public class MaxWaterStruct {public static void main(String[] args) {int[] arr = {3,1,2,5,2,4};MaxWaterStruct maxWaterStruct = new MaxWaterStruct();long l = maxWaterStruct.maxWater(arr);System.out.println(l);}public long maxWater (int[] arr) {// write code hereif(arr.length < 1){return 0;}int i = 0; // 左指针int j = arr.length - 1; // 右指针int maxLeft = arr[i]; //桶左边的长度int maxRight = arr[j]; // 桶右边的长度long ret = 0L; // 盛水总量while(i < j){// 较低边为左边if(maxLeft < maxRight){i++;// 当前位置i小于大于较低边,更新较低边的值,小于装水if(arr[i] > maxLeft){maxLeft = arr[i];}else{ret += maxLeft - arr[i];}}else{// 较低边为右边j--;// 当前位置i小于大于较低边,更新较低边的值,小于装水if(arr[j] > maxRight){maxRight = arr[j];}else{ret += maxRight - arr[j];}}}return ret;}
}
常考数据结构与算法:容器盛水问题相关推荐
- 常考数据结构与算法:输出二叉树的右视图
题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...
- 常考数据结构与算法:求二叉树的层序遍历
题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...
- 常考数据结构与算法:删除链表的倒数第n个节点
题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1-& ...
- 常考数据结构与算法:找到字符串的最长无重复字符子串
题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 示例1 输入 [2,3,4,5] 返回值 4 示例2 输入 [2,2,3,4,3] 返回值 3 方法 ...
- 常考数据结构与算法:最长公共子串
题目描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一. 示例1 输入 "1AB2345CD","1 ...
- 常考数据结构与算法:两个链表生成相加链表
题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. 例如:链表 1 为 9->3->7,链表 ...
- 常考数据结构与算法:买卖股票的最好时机
题目描述 假设你有一个数组,其中第 i 个元素是股票在第i 天的价格. 你有一次买入和卖出的机会.(只有买入了股票以后才能卖出).请你设计一个算法来计算可以获得的最大收益. 示例 1: 输入: [8, ...
- 常考数据结构和算法:设计LRU缓存结构
题目描述 设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能 set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的val ...
- 常考数据结构与算法:每k个节点反转链表
题目: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定这 ...
最新文章
- Windows下安装 openpyxl
- C语言变参函数的实现,C语言的那些小秘密之变参函数的实现
- Java中的基本数据类型以及Java的基本结构
- ajax返回的是流如何转换为pdf,如何在AJAX请求成功响应中返回PDF文件
- boost::mp11::mp_min_element相关用法的测试程序
- 三星Galaxy S21系列通过认证:终究还是要学苹果“保护环境”?
- 调用远程接口上传文件
- Assembly Manifest 通俗简易手册
- Linux-dns基础知识和BIND的简单配置-3(主从DNS服务器及转发)
- chrome浏览器不展示地址栏的完整路径解决
- python 简单文字游戏代码
- Eclipse 安装 yml 编辑器插件
- linux 安装mysql(rpm文件安装)
- 【python】【Gif制作】使用多张图片合成gif动图
- qq 客服 php,QQ支持临时会话设置
- 运筹说 第50期 | 图解法与单纯形法解目标规划
- 50件关于学霸与学渣的小事
- mysql count统计
- 怎么用clear case?
- Secure Code Warrlor学习记录(三)