變式題求數列中第k大的數
前k大問題:給定乙個長度為n陣列,求每個連續k個數的最大值,複雜度要求o(n×log(k))。
解釋:例如陣列為[1,3,2,4,5],k= 2,則連續k個數的區間有[1,3],[3,2],[2,4],[4,5],每個區間的最大值分別為3,3,4,5,所以輸出3,3,4,5
#include
using
namespace std;
constintmaxn=
1e5+5;
int n,k,a[maxn]
;multiset<
int> ms;
intmain()
for(
int i =
0; i < n; i++
)for
(int i =
0; i < k; i++
) cout <<*(
--ms.
end())
<<'';
for(
int i = k; i < n; i++
) cout
}
給定a、b兩個數列,各包含n個數,分別從a和b中任意取乙個數相加得到和,這樣會有n2種結果(包括重複的),求n2個結果中前n個最小的和。
樣例:
input:
51 3 4 2 0
7 3 5 2 11
output:
2 3 3 4 4
思路:維護乙個大小為n的優先佇列
#include
#include
#include
#include
#include
using
namespace std;
vector<
long
long
> a, b;
int n;
long
long temp;
intmain()
for(
int i =
0; i < n; i++
)sort
(a.begin()
, a.
end())
;sort
(b.begin()
, b.
end())
; a.
erase
(a.begin()
+ n /2+
1, a.
end())
; b.
erase
(b.begin()
+ n /2+
1, b.
end())
;for
(int i =
0; i < a.
size()
; i++
)else
} res.
push
(a[i]
+ b[j]);
}}while
(res.
size()
)while
(rres.
size()
)return0;
}
維護乙個大小為k的優先佇列。 求陣列中連續子陣列的最大值
求解陣列中連續一段子陣列和的最大值。例如 最大值為59 26 53 58 97 187 思路 計算出任意i到j之間連續子陣列的和再比較必然能得到最大值,但時間複雜度為o n 2 我們希望能找出線性時間的演算法。我們注意到,假如陣列中全為正數,那麼最大和必然為全部數相加 如果陣列中有負數,並且如果加上...
遞迴求陣列最大值
遞迴求陣列最大值 使用遞迴當方式求陣列中最大的值 public class diguigetmax int mid l r 2 int leftmax getmax a,0,mid int rightmax getmax a,mid 1,r return math.max leftmax,right...
求陣列中最大值
所有c語言 都是在loadrunner中執行 action 定義乙個int陣列 int len 記錄陣列元素個數 int max 所求的最大值 int i 迴圈變數 loadrunnerg中,不能在for迴圈中定義變數 len sizeof a sizeof int 陣列元素個數 陣列所佔字元數 陣...