Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++

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

WBOY
WBOYke hadapan
2023-08-29 10:17:06996semak imbas

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

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
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!

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.

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;
}

Output
Element present twice at
Start index: 0
Last index: 8
🎜

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam