首頁 > 後端開發 > C++ > 主體

在C++中,尋找未排序數組中元素的起始索引和結束索引

WBOY
發布: 2023-08-29 10:17:06
轉載
999 人瀏覽過

在C++中,尋找未排序數組中元素的起始索引和結束索引

在這個問題中,我們得到一個包含 n 個未排序整數值的陣列 aar[] 和一個整數 val。我們的任務是在未排序的陣列中尋找元素的開始和結束索引

對於數組中元素的出現,我們將返回,

“起始索引和結束索引”(如果在數組中找到兩次或多次)。

「單一索引」(如果找到)

如果陣列中不存在,則「元素不存在」

讓我們舉個例子來理解問題,

範例1

#
Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 2
Output : starting index = 0, ending index = 5
登入後複製

解釋

元素2 出現兩次,

第一次出現在索引= 0 處,

第二次出現在索引處= 5

範例2

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 5
Output : Present only once at index 2
登入後複製

解釋

元素5 在索引= 2 處僅出現一次,

範例3

Input : arr[] = {2, 1, 5, 4, 6, 2, 3}, val = 7
Output : Not present in the array!
登入後複製

解決方法

解決該問題的一個簡單方法是遍歷數組。

我們將遍歷陣列並保留兩個索引值:first 和last。第一個索引將從頭開始遍歷數組,最後一個索引將從數組尾開始遍歷。當第一個和最後一個索引處的元素值相同時結束循環。

演算法

  • 步驟1 - 迴圈遍歷陣列

    • 步驟1.1 - 使用第一個索引從開始遍歷,使用最後一個索引進行遍歷從末尾開始。

    • 步驟 1.2 - 如果任何索引處的值等於 val。不要增加索引值。

    • 步驟 1.3 - 如果兩個索引的值相同,則傳回。

    • < /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中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板