राइट साइड लेटकोड सॉल्यूशन पर तत्वों को महानतम तत्व से बदलें


कठिनाई स्तर आसान
में अक्सर पूछा वीरांगना
ऐरे

समस्या को दायीं ओर लेटकोड सॉल्यूशन पर तत्वों को सबसे महान तत्व के साथ बदलें हमें एक प्रदान करता है सरणी या पूर्णांक के वेक्टर। समस्या ने हमें सभी तत्वों को उस तत्व से बदलने के लिए कहा जो सभी तत्वों में सबसे बड़ा है। तो विचार करें कि क्या हमारे पास एक सरणी या अनुक्रम है, {a, b, c}। यदि संख्या प्रवृत्ति का अनुसरण करती है, तो b> c> a। तो, सवाल के अनुसार, आउटपुट {बी, सी, -1} होना चाहिए। समाधान में गहरी गोता लगाने से पहले, आइए कुछ उदाहरण देखें।

राइट साइड लेटकोड सॉल्यूशन पर तत्वों को महानतम तत्व से बदलें

[17,18,5,4,6,1]
[18,6,6,6,1,-1]

स्पष्टीकरण: आउटपुट को समझना आसान है क्योंकि प्रत्येक तत्व को इसके दाईं ओर सबसे बड़े तत्व द्वारा प्रतिस्थापित किया गया है।

[400]
[-1]

स्पष्टीकरण: चूंकि वर्तमान संख्या के दाईं ओर कोई तत्व नहीं है। इस प्रकार हम आउटपुट के रूप में -1 लौटाते हैं।

दाईं ओर लेकोडकोड समाधान पर महानतम तत्व के साथ तत्वों को बदलने के लिए दृष्टिकोण

समस्या अपने नाम से ही समस्या को स्पष्ट रूप से बताती है। समस्या यह कहती है कि प्रत्येक तत्व को सबसे बड़े तत्व से बदला जाए जो उसके दाईं ओर होता है। अब, केवल वही करना बाकी है जो प्रक्रिया का अनुकरण करना है। हम इसे आसानी से कर सकते हैं यदि हम दाईं ओर से सरणी को पीछे करना शुरू करते हैं। इसलिए, हम बाईं ओर से जाने के बजाय, दाईं ओर से शुरू करते हैं। हम एक तत्व रखते हैं जो अब तक मिले अधिकतम तत्व को संग्रहीत करता है। हम एक चर में वर्तमान तत्व को संग्रहीत करते हैं, फिर अधिकतम मूल्य को अपडेट करते रहें। इस बिंदु पर, हम वर्तमान तत्व को सबसे बड़े तत्व / अधिकतम तत्व से बदल सकते हैं।

राइट साइड लेटकोड सॉल्यूशन पर महान तत्व के साथ तत्वों को बदलने के लिए कोड

C ++ कोड

#include <bits/stdc++.h>
using namespace std;

vector<int> replaceElements(vector<int>& arr) {
    int mx = -1, a;
    int n = arr.size();
    for (int i = n - 1; i >= 0; --i) {
        a = arr[i];
        arr[i] = mx;
        mx = max(mx, a);
    }
    return arr;
}

int main(){
    vector<int> arr = {17,18,5,4,6,1};
    vector<int> output = replaceElements(arr);
    for(int i=0;i<6;i++)
        cout<<output[i]<<" ";
}
18 6 6 6 1 -1

जावा कोड

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
  public static int[] replaceElements(int[] arr) {
        int mx = -1, a;
        int n = arr.length;
        for (int i = n - 1; i >= 0; --i) {
            a = arr[i];
            arr[i] = mx;
            mx = Math.max(mx, a);
        }
        return arr;
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    int[] arr = {17,18,5,4,6,1};
    int[] output = replaceElements(arr);
    for(int i=0;i<6;i++)
      System.out.print(output[i]+" ");
  }
}
18 6 6 6 1 -1

जटिलता विश्लेषण

समय की जटिलता

पर), चूंकि हम एक बार सरणी को पीछे छोड़ते हैं। समय जटिलता भी रैखिक है।

अंतरिक्ष जटिलता

ओ (1), एल्गोरिथ्म एक इन-प्लेस एक है और इस प्रकार अंतरिक्ष जटिलता स्थिर है।