ホームページ > バックエンド開発 > C++ > C++ でソートされていない配列内の要素の開始インデックスと終了インデックスを検索する

C++ でソートされていない配列内の要素の開始インデックスと終了インデックスを検索する

WBOY
リリース: 2023-08-29 10:17:06
転載
1048 人が閲覧しました

C++ でソートされていない配列内の要素の開始インデックスと終了インデックスを検索する

この問題では、n 個のソートされていない整数値と整数 val を含む配列 aar[] が与えられます。私たちのタスクは、ソートされていない配列内の要素の 開始インデックスと終了インデックス を見つけることです。

配列内の要素の出現については、

"開始インデックスと終了インデックス" (配列内で 2 回以上見つかった場合) を返します。

「単一インデックス」 見つかった場合

「要素が存在しません」 配列内に見つからなかった場合。

問題を理解するために例を挙げてみましょう。

例 1

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5
ログイン後にコピー

説明

要素 2 は 2 回出現します。

はインデックス = 0 で最初に出現し、

はインデックス = 5 で 2 回目に出現します。

例 2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2
ログイン後にコピー

説明

要素 5 はインデックス = 2 で 1 回だけ表示されます。

例 3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!
ログイン後にコピー

解決策

これを解決します。この問題へのアプローチは、配列を反復処理することです。

配列を反復処理し、最初と最後という 2 つのインデックス値を保持します。最初のインデックスは配列の先頭から検索し、最後のインデックスは配列の末尾から検索します。最初と最後のインデックスの要素が同じ値を持つ場合、ループは終了します。

アルゴリズム

  • ステップ 1 - 配列をループする

    • ステップ 1.1 - 最初のインデックスを使用して先頭からトラバースし、最後のインデックスを使用して末尾からトラバースします。

    • ステップ 1.2 - いずれかのインデックスの値が val に等しい場合。インデックス値を増加させないでください。

    • ステップ 1.3 - 2 つのインデックスが同じ値を持つかどうかを返します。

    • < /ul>

    サンプル

    ソリューションがどのように機能するかを示すプログラム

    #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;
    }
    ログイン後にコピー

    出力

    Element present twice at
    Start index: 0
    Last index: 8
    ログイン後にコピー

    以上がC++ でソートされていない配列内の要素の開始インデックスと終了インデックスを検索するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート