首頁 >後端開發 >C++ >設計一個佇列資料結構,在O(1)時間內取得最小或最大值

設計一個佇列資料結構,在O(1)時間內取得最小或最大值

PHPz
PHPz轉載
2023-09-10 14:33:021096瀏覽

設計一個佇列資料結構,在O(1)時間內取得最小或最大值

C 有一個 deque 頭文件,用於處理堆疊和佇列的屬性。在資料結構中,解決O(1)時間複雜度的問題,需要常數時間。透過在該程式中使用雙端佇列,我們獲得了同時使用堆疊和佇列的優勢。

在本文中,我們將解決佇列資料結構,以在 O(1) 時間內取得數字的最小值或最大值。

文法

deque<data_type> name_of_queue;

參數

  • deque - 這以雙端隊列而聞名,它訂購了與隊列等效的一組項目或數字。

  • data_type - 使用的資料類型,如 int、float 等

  • name_of_queue - 為佇列指定的任何名稱,如 ab、cd 等。

front()

front()是C STL中的預定義函數,它直接引用隊列的第一個索引位置。

back()

back()是C STL中的預定義函數,它直接引用佇列的最後一個索引位置。

push_back()

push_back() 也是預先定義函數,用來從後面插入元素。

演算法

  • 我們將使用頭檔 'iostream''deque' 啟動程式。

  • 我們插入雙端佇列來處理數字的最大值或最小值。

    • 「deque dq」 - 透過使用它,我們可以啟用堆疊和佇列的屬性

  • 從 for 迴圈開始,我們插入 1015 範圍內的元素。 接著使用名為 'push_back[i ]' 接受 'i' 作為參數,使用 for 迴圈推送陣列元素。

  • 然後,我們使用預定義函數 front()back() 建立兩個變數來尋找數字的最小值和最大值。 front() 尋找第一個索引來表示最小數字,而 back() 尋找最後一個索引來表示最大數字。

  • 現在我們正在初始化 for 迴圈來迭代索引號長度,並使用該長度將最小和最大元素的比較分類為 'dq[i]'。 因此,這將找出最小和最大數。

  • 最後,我們在'min_element''max_element'變數的幫助下列印最小和最大長度的輸出。

    李>

範例

在這個程式中,我們將解決佇列資料結構以在 O(1) 時間內獲得最小值和最大值。

#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<int> dq; 
   // double ended queue
   // insert elements into the deque using a loop
   for(int i = 10; i <= 15; i++) {
      dq.push_back(i);
   }
   // find the minimum and maximum elements
   int min_element = dq.front();
   int max_element = dq.back();

   for(int i = 1; i < dq.size(); i++) {
      if(dq[i] < min_element) {
         min_element = dq[i];
      }
      if(dq[i] > max_element) {
         max_element = dq[i];
      }
   }
   //Print the minimum and maximum elements
   cout << "Minimum element: " << min_element << endl;
   cout << "Maximum element: " << max_element << endl;
   return 0;
}

輸出

Minimum element: 10
Maximum element: 15

結論

我們探索了佇列資料結構的概念來尋找最小或最大元素。我們了解了 front() 和 back() 如何用於尋找元素的最小值和最大值,也了解如何將回推加入索引元素的末尾。透過使用雙端佇列,我們可以以 O(1) 的時間複雜度處理問題。

以上是設計一個佇列資料結構,在O(1)時間內取得最小或最大值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除