Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++

WBOY
Lepaskan: 2023-08-29 10:17:06
ke hadapan
997 orang telah melayarinya

Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++

Dalam masalah ini, kita mendapat tatasusunan aar[] yang mengandungi n nilai integer tidak diisih dan val integer. Tugas kita ialah mencari indeks mula dan akhir elemen dalam tatasusunan yang tidak diisih.

Untuk kejadian elemen dalam tatasusunan, kami akan kembali,

"indeks mula dan indeks akhir" (jika ditemui dua kali atau lebih dalam tatasusunan).

"indeks tunggal" jika ditemui

"elemen tidak hadir" jika tidak hadir dalam tatasusunan.

Mari kita ambil contoh untuk memahami masalah,

Contoh 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5
Salin selepas log masuk

Penjelasan

Elemen 2 muncul dua kali,

pertama kali pada indeks

pada masa indeks = 0,

pertama kali pada indeks = 0

Contoh 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2
Salin selepas log masuk
Penjelasan

Elemen 5 muncul sekali sahaja pada indeks = 2,

Contoh 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!
Salin selepas log masuk

Penyelesaian

Cara mudah untuk menyelesaikan masalah ini adalah dengan mengulangi masalah ini.

Kami akan berulang melalui tatasusunan dan mengekalkan dua nilai indeks: pertama dan terakhir. Indeks pertama akan melintasi tatasusunan dari awal, dan indeks terakhir akan melintasi dari penghujung tatasusunan. Gelung berakhir apabila elemen pada indeks pertama dan terakhir mempunyai nilai yang sama.

Algoritma
  • Langkah 1

    - Gelung melalui tatasusunan
    • Langkah 1.1

      - Gunakan indeks pertama untuk melintasi dari awal dan akhir terakhir.
    • Langkah 1.2

      - Jika nilai pada mana-mana indeks adalah sama dengan val. Jangan naikkan nilai indeks.
    • Langkah 1.3

      - Kembali jika kedua-dua indeks mempunyai nilai yang sama.
    • < /ul>

    Contoh

    Program yang menggambarkan cara penyelesaian kami berfungsi

    #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;
    }
    Salin selepas log masuk

    Output

    Element present twice at
    Start index: 0
    Last index: 8
    Salin selepas log masuk
    🎜

    Atas ialah kandungan terperinci Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan