給定一組區間,求重疊次數最多的子區間以及重疊次數。
樣例輸入
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。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數...