Monotonik Array LeetCode Solution

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon Facebook
alqoritmlər Geyim kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutionsBaxılıb 40

Problem bəyanat

"Monotonik Array" problemində bizə bir sıra verilir. Bizim vəzifəmiz massivin a olub olmadığını yoxlamaqdır monoton massiv ya yox.

Monotonik bir sıra, elementlərin ya artan qaydada, ya da azalan qaydada sıralandığı bir massivdir. Bir sıra artan qaydada sıralanırsa, bir sıra arr [üçün], arr [i] <= arr [i + 1]. Azalan sırada sıralanan bir sıra üçün arr [i]> = arr [i + 1].

Funksiya yalnız sıra monoton olduqda true qayıtmalıdır. Əks təqdirdə, saxta qayıdın.

misal

arr={1,2,4,5}
true

Explanation:  Hər bir sıra üçün verilən massivdə [i]

Yanaşma

Bu problemi həll etmək üçün monotonik massivin nə olduğunu aydın başa düşmək çox vacibdir.

monotonik bir sıra dizinin indeksindəki indeks nömrəsi ilə dəyər arasında bir qrafik çəksək, ya artan, ya da azalan qrafik quran bir sıra. Aşağıdakı şəkil monotonik artan və azalan qrafiki göstərir.

monotonik Array leetcode həlliPin

Bu problemə yanaşma kimidir, serialı keçərək arr [i] <= arr [i + 1] yoxlayaraq artan bir sıra olduğunu yoxlayacağıq. Əgər bu artan bir sıradırsa, onda verilən sıra monotonik bir massivdir, əks halda yenidən massivi keçib arr [i]> = arr [i + 1] olub olmadığını yoxlayaraq azalan bir sıra olduğunu yoxlayacağıq. Azalan bir sıradırsa, verilmiş sıra monotonik bir massivdir, əks halda monotonik bir sıra deyil.

Dizinin yalnız bir keçiddən istifadə edərək artdığını və ya azaldığını da yoxlaya bilərik. İki bayraq isincr və isdec istifadə edəcəyik və true ilə başladacağıq. A [i]> A [i + 1] olarsa isincr yalan, A [i] <A [i + 1] olarsa isdec yalan olar. massiv monotonikdirsə, ən azı isincr və isdec biri doğru olacaqdır. Hər ikisi də yalan olduqda massiv monoton olmur, çünki hər iki yalan dəyər massivdəki dəyərin həm artdığını, həm də azaldığını göstərir.

 

Kodu

C ++ Monotonik Array LeetCode Solution

#include <bits/stdc++.h> 
using namespace std; 
        bool isMonotonic(vector<int>& A) {
        bool isincr = true;
        bool isdec = true;
        int n=A.size();
        for (int i = 0; i < n- 1; ++i) {
            if (A[i] > A[i+1])
                isincr = false;
            if (A[i] < A[i+1])
               isdec = false;
        }

        return isincr || isdec;   
    }

int main() 
{ 
 vector<int> arr = {1,2,4,5}; 
 cout <<boolalpha;
 cout<<isMonotonic(arr)<<endl; 
 return 0;
}
true

Java Monotonik Array LeetCode Solution

import java.util.Arrays; 
public class Tutorialcup {
    public  static  boolean isMonotonic(int[] A) {
        boolean isincr = true;
        boolean isdec = true;
        int n=A.length;
        for (int i = 0; i < n- 1; ++i) {
            if (A[i] > A[i+1])
                isincr = false;
            if (A[i] < A[i+1])
               isdec = false;
        }

        return isincr || isdec;   
}
  public static void main(String[] args) {
    int [] arr = {1,2,4,5}; 
    boolean ans= isMonotonic(arr);
    System.out.println(ans);
  }
}
true

Monotonik Arrayın Mürəkkəblik Analizi

Zaman mürəkkəbliyi

Yuxarıdakı kodun zaman mürəkkəbliyi O (n) çünki monotonik bir sıra olub olmadığını yoxlamaq üçün yalnız bir dəfə serialı gəzirik. Burada n giriş massivinin ölçüsüdür.

Kosmik mürəkkəblik

Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki cavabları saxlamaq üçün yalnız dəyişəndən istifadə edirik.

References

Şərh yaz

Translate »