Heim > Backend-Entwicklung > C++ > Finden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++

Finden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++

WBOY
Freigeben: 2023-08-29 10:17:06
nach vorne
1067 Leute haben es durchsucht

Finden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++

In diesem Problem erhalten wir ein Array aar[], das n unsortierte Ganzzahlwerte und einen Ganzzahlwert enthält. Unsere Aufgabe besteht darin, den Start- und Endindex eines Elements in einem unsortierten Array zu finden.

Bei Vorkommen eines Elements im Array geben wir

„Startindex und Endindex“ zurück (wenn es zweimal oder öfter im Array gefunden wird).

„einzelner Index“ wenn gefunden

„Element nicht vorhanden“ wenn nicht im Array vorhanden.

Nehmen wir ein Beispiel, um das Problem zu verstehen:

Beispiel 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5
Nach dem Login kopieren

Erklärung

Element 2 erscheint zweimal,

zum ersten Mal bei Index = 0,

zum zweiten Mal bei Index = 5

Beispiel 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2
Nach dem Login kopieren

Erklärung

Element 5 erscheint nur einmal bei Index = 2,

Beispiel 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!
Nach dem Login kopieren

Lösung

Eine einfache Möglichkeit, dieses Problem zu lösen, besteht darin, über das Array zu iterieren.

Wir durchlaufen das Array und behalten zwei Indexwerte bei: den ersten und den letzten. Der erste Index durchläuft das Array vom Anfang und der letzte Index durchläuft das Array vom Ende. Die Schleife endet, wenn die Elemente am ersten und letzten Index den gleichen Wert haben.

Algorithmus

  • Schritt 1 – Schleife durch das Array

    • Schritt 1.1 – Verwenden Sie den ersten Index zum Durchlaufen vom Anfang und den letzten Index zum Durchlaufen vom Ende.

    • Schritt 1.2 – Wenn der Wert an einem Index gleich val ist. Erhöhen Sie den Indexwert nicht.

    • Schritt 1.3 – Rückkehr, wenn beide Indizes den gleichen Wert haben.

    • < /ul>

    Beispiel

    Programm, das veranschaulicht, wie unsere Lösung funktioniert

    #include <iostream>
    using namespace std;
    
    void findStartAndEndIndex(int arr[], int n, int val) {
       int start = 0;
       int end = n -1 ;
       while(1){
       if(arr[start] != val)
          start++;
       if(arr[end] != val)
          end--;
       if(arr[start] == arr[end] && arr[start] == val)
          break;
       if(start == end)
          break;
    }
       if (start == end ){
          if(arr[start] == val)
             cout<<"Element is present only once at index : "<<start;
          else
             cout<<"Element Not Present in the array";
       } else {
          cout<<"Element present twice at \n";
          cout<<"Start index: "<<start<<endl;
          cout<<"Last index: "<<end;
       }
    }
    int main() {
       int arr[] = { 2, 1, 5, 4, 6, 2, 9, 0, 2, 3, 5 };
       int n = sizeof(arr) / sizeof(arr[0]);
       int val = 2;
       findStartAndEndIndex(arr, n, val);
       return 0;
    }
    Nach dem Login kopieren

    Ausgabe

    Element present twice at
    Start index: 0
    Last index: 8
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonFinden Sie den Start- und Endindex von Elementen in einem unsortierten Array in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage