Maximum Index

2024-09-04 15:32
文章标签 maximum index

本文主要是介绍Maximum Index,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Given an array arr[], find the maximum j – i such that arr[j] > arr[i]

Given an array arr[], find the maximum j – i such that arr[j] > arr[i].

Examples:

  Input: {34, 8, 10, 3, 2, 80, 30, 33, 1}Output: 6  (j = 7, i = 1)Input: {9, 2, 3, 4, 5, 6, 7, 8, 18, 0}Output: 8 ( j = 8, i = 0)Input:  {1, 2, 3, 4, 5, 6}Output: 5  (j = 5, i = 0)Input:  {6, 5, 4, 3, 2, 1}Output: -1 
思路1: 暴力解,用两层循环扫,更新最大值。
思路2:想再提高就得保存之前的信息,我们生成一个leftmin,保存的是到i为止,往左看最小的信息,然后生成一个rightmax,是往右看,目前为止最大的值,这样做的好处就是,我们就不用管最左边和最右边的信息了,只用管当前就行了,这样子的更本目的就是用空间换时间,存储了一部分信息,这样再次遍历的时候,就可以提速。

To solve this problem, we need to get two optimum indexes of arr[]: left index i and right index j. For an element arr[i], we do not need to consider arr[i] for left index if there is an element smaller than arr[i] on left side of arr[i]. Similarly, if there is a greater element on right side of arr[j] then we do not need to consider this j for right index. So we construct two auxiliary arrays LMin[] and RMax[] such that LMin[i] holds the smallest element on left side of arr[i] including arr[i], and RMax[j] holds the greatest element on right side of arr[j] including arr[j]. After constructing these two auxiliary arrays, we traverse both of these arrays from left to right. While traversing LMin[] and RMa[] if we see that LMin[i] is greater than RMax[j], then we must move ahead in LMin[] (or do i++) because all elements on left of LMin[i] are greater than or equal to LMin[i]. Otherwise we must move ahead in RMax[j] to look for a greater j – i value.

Thanks to celicom for suggesting the algorithm for this method.

import java.util.*;
import java.lang.*;
import java.io.*;class GFG {public static int calcualteMax1(int[] array) {int max = 0;for(int i=0; i<array.length; i++){for(int j=i+1; j<array.length; j++){if(array[i]<array[j]){max = Math.max(max, j-i);}}}return max;}public static int calcualteMax2(int[] array) {int[] leftmin = new int[array.length];int[] rightmax = new int[array.length];leftmin[0] = array[0];for(int i=1; i<array.length; i++){if(array[i]<leftmin[i-1]){leftmin[i] = array[i];} else {leftmin[i] = leftmin[i-1];}}rightmax[array.length-1] = array[array.length-1];for(int j=array.length-2; j>=0; j--){if(array[j]>rightmax[j+1]){rightmax[j] = array[j];} else{rightmax[j] = rightmax[j+1];}}int i=0;  int j=0; int max = 0;while(i<array.length && j<array.length){if(leftmin[i]<rightmax[j]){max = Math.max(max, j-i);j++;}else{i++;}}return max;}public static void main (String[] args) {//codeScanner scanner = new Scanner(System.in);int n = scanner.nextInt();for(int i=0; i<n; i++){int length = scanner.nextInt();int[] array = new int[length];for(int j=0; j<length; j++){array[j] = scanner.nextInt();}System.out.println(calcualteMax2(array));}}}



这篇关于Maximum Index的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136348

相关文章

IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm

最近投了篇IEEE的顶级会议文章,一下是比较有用的一些资料,以供参考。 1.会议主页:http://cadcg2015.nwpu.edu.cn/index.htm     (The 14th International Conference on Computer-Aided Design and Computer Graphics (CAD/Graphics 2015)) 2.I

INDEX+SMALL+IF+ROW函数组合使用解…

很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP、INDEX+MATCH中入门的,纵然你把全部的多条件查找方法都学会了而且运用娴熟,如VLOOKUP和&、SUMPRODUCT、LOOKUP(1,0/....,但仍然只能对这种一对多的查询望洋兴叹。   这里讲的INDEX+SMALL+IF+ROW的函数组合,

CTFHub技能树-Git泄漏-Index

目录 一、Git索引(Index)的基本概念 二、解题过程 主旨:使用git泄漏恢复源代码 方法一:使用GitHack手动恢复 方法二:直接使用Git_Extract获取网站源代码拿去flag   当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的Gi

android.database.CursorIndexOutOfBoundsException: Index 5 requested, with a size of 5

描述: 01-02 00:13:43.380: E/flyLog:ChatManager(963): getUnreadChatGroupandroid.database.CursorIndexOutOfBoundsException: Index 5 requested, with a size of 5 01-02 00:13:43.380: E/flyLog:ChatManager(

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

关于OceanBase MySQL 模式中全局索引 global index 的常见问题

在OceanBase的问答区和开源社区钉钉群聊中,时常会有关于全局索引 global index的诸多提问,因此,借这篇博客,针对其中一些普遍出现的问题进行简要的解答。 什么是 global index ? 由于 MySQL 不具备 global index 的概念,因此这一问题会经常被社区版用户提及。就在前几天,就要人询问下面这个语法的意义。 create table part_tes

运行PHP程序时提示“Notice: Undefined index”的解决办法

最近在调试网站程序的时候,不知道怎么经常出现“Notice:Undefined index”的提示,程序又可以正常运行,就是看到这个提示感觉有点不爽,把模板搞乱了,经查其实这个不是错误,是警告。如果服务器不能改,那每个变量使用前应当先定义。怎么样解决呢?很多网友的说法不一致,程序不一样你也根本没办法照着解决,要是自己慢慢研究的话一大堆代码得半天试,在这里提供一个最简单有效经本人测试有效的办法给大家

Maximum likelihood function maximizes what thing?

最大似然函数(Maximum Likelihood Function)最大化的是数据在给定参数下出现的概率。具体来说,它最大化的是似然函数(Likelihood Function),即给定参数 ( \theta ) 下观测数据的概率。在统计学中,似然函数 ( L(\theta) ) 通常定义为所有独立观测数据点概率的乘积,对于参数 ( \theta ) 的函数。 对于一组独立同分布的观测数据

【硬刚ES】ES基础(十三)Dynamic Template和Index Template

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

mysql 的函数用法SUBSTRING_INDEX

因为数据库的数据要更新操作,内容是这样的: 这是之前的数据,现在因为需求变更,只需要横杠之前的数据,数据量少可以手动改,但是有几百条的数据,所以找到了一个方法 UPDATE product SET pro_price=SUBSTRING_INDEX(pro_price, '-', 1);  这个SUBSTRING_INDEX就是用来截取的 pro_price是要修改的字段名,然后中间