博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Letcode双指针题的Java实现(盛水容器和合并区间)
阅读量:4112 次
发布时间:2019-05-25

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

1.合并区间

class Solution {
public int[][] merge(int[][] intervals) {
if(intervals.length < 2) return intervals; // 排序:根据区间起始值升序 Arrays.sort(intervals, (o1,o2)->(o1[0]-o2[0])); List
list = new ArrayList<>(); int[] lastInterval = null; //数组指针 for (int[] interval : intervals) {
//如果当前区间与上个区间不重合,区间如list,指针后移 if(lastInterval == null || lastInterval[1] < interval[0]){
lastInterval = interval; list.add(lastInterval); } //重合则判断当前区间是否为上一区间子集,如果不是就要更新右边界 else if(lastInterval[1] < interval[1]){
lastInterval[1] = interval[1]; } } return list.toArray(new int[0][]); }}

2.盛最多水的容器

思路:盛水量 = 左右两端中较短板高度 * 两板距离。因此可定义 i 和 j 两个指针分别指向数组的左右两端,然后两个指针向中间搜索。因为水量取决于短板,每次都将较短板往中间移。

双指针法:class Solution {
public int maxArea(int[] height) {
int i = 0, j = height.length - 1, res = 0; while(i < j){
//每次更新面积最大值 res,直到 i == j 时返回 res。 res = height[i] < height[j] ? Math.max(res, (j - i) * height[i++]): Math.max(res, (j - i) * height[j--]); } return res; }}

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

你可能感兴趣的文章
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>