博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
962-最大宽度坡
阅读量:5951 次
发布时间:2019-06-19

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

前言

的:

给定一个整数数组 A,坡是元组 (i, j),其中 i < jA[i] <= A[j]。这样的坡的宽度为 j - i

找出 A 中的坡的最大宽度,如果不存在,返回 0

示例1:

输入:[6,0,8,2,1,5]输出:4解释:最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.

示例2:

输入:[9,8,1,0,1,9,4,0,4,1]输出:7解释:最大宽度的坡为 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1.

提示:

  1. 2 <= A.length <= 50000
  2. 0 <= A[i] <= 50000

解题思路

本题中的元组个人感觉是一个烟雾弹,就算不了解元组的概念也能够完成本题。本题的逻辑虽然不复杂,但是如果只是按照逻辑实现,会出现Time Limit Exceeded的情况,需要在实现的代码上进行算法的优化,减少循环次数从而避免 Time Limit Exceeded

本题的逻辑实现其实很简单,使用双指针法即可完成。

首先第一个指针有序的遍历每个元素,当第一个指针指向一个元素时,第二个指针则遍历这个元素后的每一个元素,并依次与第一个指针指向的元素进行比较,如果值比它小,则计算坡度并与当前最大坡度进行比较,记录较大值。

实现代码

逻辑实现

这个代码是根据题意实现的基础代码,会出现Time Limit Exceeded的情况

public int maxWidthRamp(int[] A) {        //最大宽度        int maxWidth=0;        for(int i=0;i
<= A[j]则计算宽度 maxWidth=maxWidth>=(j-i)?maxWidth:j-i;//计算最大宽度 } } } return maxWidth; }

算法优化

/**     * 962. 最大宽度坡     * @param A     * @return     */    public int maxWidthRamp(int[] A) {        //最大宽度        int maxWidth=0;        //理论最大宽度        int mayMaxWidth=0;        for(int i=0;i
=mayMaxWidth){//超过理论最大值表示已经找到最大宽度坡,直接终止循环 break; } for(int j=i+1;j
<= A[j]则计算宽度 maxWidth=maxWidth>=(j-i)?maxWidth:j-i;//计算最大宽度 } } } return maxWidth; }

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

你可能感兴趣的文章
Linux查看系统负载(CPU和MEM考虑)
查看>>
Codeforces Round #249 (Div. 2) B. Pasha Maximizes
查看>>
【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”(9patch 工具),让Android游戏开发更方便!...
查看>>
【查找算法】基于存储的查找算法(哈希查找)
查看>>
JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
查看>>
Tomcat组件梳理--Server
查看>>
记录一下这次web实训的两个网站
查看>>
POJ-1830 开关问题 高斯消元
查看>>
HDU-4366 Successor 线段树+预处理
查看>>
做程序开发的你如果经常用Redis,这些问题肯定会遇到
查看>>
CAS-认证流程
查看>>
006android初级篇之jni数据类型映射
查看>>
Java 集合框架查阅技巧
查看>>
apache配置虚拟主机
查看>>
CollectionView水平和竖直瀑布流的实现
查看>>
前端知识复习一(css)
查看>>
从输入网址到显示网页的全过程分析
查看>>
spark集群启动步骤及web ui查看
查看>>
Maven学习笔记二:常用命令
查看>>
利用WCF改进文件流传输的三种方式
查看>>