ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 用右侧的最大元素替换每个元素 > 原文: [https://www.geeksforgeeks.org/replace-every-element-with-the-greatest-on-right-side/](https://www.geeksforgeeks.org/replace-every-element-with-the-greatest-on-right-side/) 给定一个整数数组,将每个元素替换为数组中的下一个最大元素(右侧的最大元素)。 由于最后一个元素旁边没有元素,因此将其替换为 -1。 例如,如果数组为`{16, 17, 4, 4, 3, 5, 2}`,则应将其修改为`{17, 5, 5, 5, 2, -1}`。 ## 强烈建议您在继续解决方案之前,单击此处进行练习。 这个问题与本帖的[非常相似,解决方案也相似。](https://www.geeksforgeeks.org/leaders-in-an-array/) **朴素的方法**是要运行两个循环。 外循环将从左到右一个接一个的拾取数组元素。 内循环将在选取的元素之后找到最大的元素。 最后,外循环将用内循环找到的最大元素替换选取的元素。 此方法的时间复杂度将为`O(n * n)`。 一种棘手的**方法**是使用数组的一次遍历来替换所有元素。 这个想法是从最右边的元素开始,一个一个地移到左侧,并跟踪最大的元素。 将每个元素替换为最大元素。 ## C++ ```cpp // C++ Program to replace every element with the greatest  // element on right side  #include <bits/stdc++.h> using namespace std; /* Function to replace every element with the  next greatest element */ void nextGreatest(int arr[], int size)  {      // Initialize the next greatest element      int max_from_right = arr[size-1];      // The next greatest element for the rightmost element      // is always -1      arr[size-1] = -1;      // Replace all other elements with the next greatest      for(int i = size-2; i >= 0; i--)      {          // Store the current element (needed later for updating          // the next greatest element)          int temp = arr[i];          // Replace current element with the next greatest          arr[i] = max_from_right;          // Update the greatest element, if needed          if(max_from_right < temp)          max_from_right = temp;      }  }  /* A utility Function that prints an array */ void printArray(int arr[], int size)  {      int i;      for (i = 0; i < size; i++)          cout << arr[i] << " ";      cout << endl;  }  /* Driver program to test above function */ int main()  {      int arr[] = {16, 17, 4, 3, 5, 2};      int size = sizeof(arr)/sizeof(arr[0]);      nextGreatest (arr, size);      cout << "The modified array is: \n";      printArray (arr, size);      return (0);  }  // This is code is contributed by rathbhupendra ```