區間最大經過次數

2021-10-01 10:47:13 字數 1097 閱讀 5378

給定一組區間,求重疊次數最多的子區間以及重疊次數。

樣例輸入

10 3

1 44 7

4 9樣例輸出

3 4 4

定義結構體(數值,是否為起始端),把輸入放入結構體陣列。先排序,數值小的在前,相同數值情況下,起始點在前。

定義乙個計數器,遍歷結構體陣列,遇到起始端計數加一,遇到結束點計數器減一,並儲存最大值。最大值處儲存左端點,儲存下乙個結束點為右端點。

struct node };

bool

cmp(

const node& a,

const node& b)

void

maxpass

(vectorint>> arr)

sort

(v.begin()

, v.

end(

), cmp)

;int mx = int_min, count =0;

int left =

0, right =

0, flag =0;

for(

int i =

0; i < v.

size()

; i++

)else}}

cout << mx <<

" "<< left <<

" "<< right;

}

定義記錄變數,計數變數,符合某種條件時,計數變數相應加一減一,並在計數器最大時更新記錄變數。

陣列找出現次數超過一半的數

雜湊表記錄元素及出現次數。時間o(n

)o(n)

o(n)

空間o(n)

o(n)

o(n)

。partition。次數超過一般的數字排序後定在陣列中間出現,所以找陣列中位數即可。利用快排partition,時間o(n

)o(n)

o(n)

,空間o(1

)o(1)

o(1)

。哨兵:定義返回值變數res和計數變數cnt,cnt初始為0,遇到與res相同數計數加一否則計數減一;當cnt==0時,更新res並設定cnt=1,最後返回res。

RMQ(模板 ST 區間最值,區間頻繁次數)

ps 介紹 rmq演算法,是乙個快速求區間最值的離線演算法,預處理時間複雜度o n log n 查詢o 1 所以是乙個很快速的演算法,當然這個問題用線段樹同樣能夠解決。1 求區間的最大值和最小值!如下 include include include include using namespace s...

最大重疊區間大小

在標準輸出上列印出輸入資料檔案中最大重疊區間的大小,如果所有行都沒有重疊區間,則輸出0。具體如下 將輸入的區間按起點從小到大排列,然後對每個區間判斷從當前區間起點到目前的end的距離,此距離即為覆蓋距離,當覆蓋距離大於最大的距離時則更新最大距離。每次迴圈都要判斷是否需要更新end,end表示目前所有...

出現次數最大的整數

演算法訓練 出現次數最多的整數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數...