LeetCode C++ 1299. Replace Elements with Greatest Element on Right Side【Array】シンプル

4576 ワード

Given an array arr, replace every element in that array with the greatest element among the elements to its right, and replace the last element with -1 .
After doing so, return the array.
Example 1:
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]

Constraints:
  • 1 <= arr.length <= 10^4
  • 1 <= arr[i] <= 10^5

  • タイトル:与えられた配列で、各要素は右側の最大要素に置き換えられ、最後の要素は-1に置き換えられます.
    構想:その場で修正し、配列要素を後ろから前に置き換えるには、変数追跡最大値を定義する必要があります.
    コード:
    class Solution {
    public:
        vector<int> replaceElements(vector<int>& arr) { 
            if (arr.empty()) return arr;
            int maxValue = -1; 
            for (int i = arr.size() - 1; i >= 0; --i) { 
                int t = arr[i];
                arr[i] = maxValue;
                maxValue = max(maxValue, t);
            } 
            return arr;
        }
    };