💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 给定数组`arr[]`,找到最大`j – i`,使得`arr[j] > arr[i]` > 原文: [https://www.geeksforgeeks.org/given-an-array-arr-find-the-maximum-j-i-such-that-arrj-arri/](https://www.geeksforgeeks.org/given-an-array-arr-find-the-maximum-j-i-such-that-arrj-arri/) 给定数组`arr[]`,找到最大`j – i`,使得`arr[j] > arr[i]`。 **示例**: ``` 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(简单但效率低下)** 运行两个循环。 在外循环中,从左开始一个接一个地选择元素。 在内部循环中,将拾取的元素与从右侧开始的元素进行比较。 当您看到一个大于选取的元素的元素时,请停止内部循环,并保持当前的最大`j-i`更新。 ## C++ ```cpp #include <bits/stdc++.h> using namespace std; /* For a given array arr[], returns the maximum j – i such that     arr[j] > arr[i] */ int maxIndexDiff(int arr[], int n) {     int maxDiff = -1;     int i, j;     for (i = 0; i < n; ++i)     {         for (j = n-1; j > i; --j)         {             if(arr[j] > arr[i] && maxDiff < (j - i))                 maxDiff = j - i;         }     }     return maxDiff; } int main() {     int arr[] = {9, 2, 3, 4, 5, 6, 7, 8, 18, 0};     int n = sizeof(arr)/sizeof(arr[0]);     int maxDiff = maxIndexDiff(arr, n);     cout<< "\n" << maxDiff;     return 0; } // This code is contributed // by Akanksha Rai(Abby_akku) ```