程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 淺談單調隊列、單調棧

淺談單調隊列、單調棧

編輯:關於C++

淺談單調隊列、單調棧。本站提示廣大學習愛好者:(淺談單調隊列、單調棧)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談單調隊列、單調棧正文


初談這個話題,信任很多人會有一種似有所悟,但又不敢肯定的感到。沒錯,這恰是由於個中“單調”一詞的存在,所謂單調是甚麼,學過函數的people都曉得單調函數或許函數的單調性,直白一點說單調就是一向增或一向減。例如:1,3,5,9就是一個單調增數列,數列中不存在後一個數比前一個數小的景象。那末異樣,在這裡談到的話題也有相似特色。

先說一下單調隊列吧!      單調隊列,就是一個相符單調性質的隊列,它同時具有單調的性質和隊列的性質。他在編程中應用頻率不高,但卻占領相當主要的位置。它的感化很簡略,就是為了保護一組單調數據,讓我們在運轉的進程中可以或許疾速追求前k個或後k個中最年夜或最小的值。    至於單調棧,信任看完下面的論述後,都邑有一個年夜概的懂得,單調棧就是一個相符單調性質的棧它同時具有單調的性質和棧的性質。在感化方面二者是雷同的,差異僅是在編程進程中所保護的數組的方法分歧。

上面我會舉個簡略的列子來說明單調隊列及單調棧。

例題:有一組數據1,5,9,4,7,8,6,他們會依此輸出,同時,在某一時辰會讓你求出後n個數中的最年夜值。                

依據題意,我們可以得出如許一個結論,若後一個數年夜於前一個數,則成果一定不會是前一個數(好比如今輸出了1,5,因為1<5,所以不管是後幾個數中的最年夜值均不會為1),是以,我們只需保護一個單調遞加的數組即可疾速求得所需之。(數組變更以下:輸出——1,數組——1;輸出——5,因為5>1刪去1添入5,數組——5;輸出——9,因為9>5刪去5添入9,數組——9;輸出——4,因為4<9直接添入,數組——9,4;輸出——7,因為7>4同時7<9是以刪去4添入7,數組——9,7;輸出——8,因為8>4同時8<9是以刪去7添入8,數組——9,8;輸出——6,因為6<8直接添入,數組——9,8,6。)

單調隊列及單調棧的基本也就這些,剩下的就只剩下小我懂得及演習了。推舉幾道題,在年夜視野上的1012和1047,個中1012比擬裸合適初學者做,1047略有難度推舉做完1012後再做。(在這裡給個提醒,1047要用到兩次單調隊列、單調棧,橫著一次再用成果豎這一次。)

以上就是本文的全體內容了,願望對你有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved