二分列舉中位數,然後:mid為當前的中位數,找到比a[i]大mid的數(>=a[i]+mid)的個數,判斷cnt是不是有總數的一半
#include
using namespace std;
typedef long
long ll;
#define ms(a) memset(a,0,sizeof(a))
#define mp make_pair
#define pb push_back
const
int inf = 0x3f3f3f3f;
const ll infll = 0x3f3f3f3f3f3f3f3fll;
inline ll read()
while(ch>='0'&&ch<='9')
return x*f;
}///
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
//////
/////
const
int maxn = 1e5+10;
ll a[maxn];
int main()
if(cnt <= tmp/2) // 並不知道為什麼等於,對於第乙個樣例,m個數是1 1 1 2 2 3 按照題目的要求,中位數是1
// 我猜 是當m是偶數的時候,中位數mid可能重複,所以要再往下找乙個
r = mid-1;
else
ans = mid, l = mid+1;
}cout << ans << endl;
}return
0;}
求二叉搜尋樹的中位數
題目 求二叉搜尋樹的中位數。二叉搜尋樹結點定義 struct bstnode 解法一 中序遍歷 二叉搜尋樹的中序遍歷結果是有序的,利用這一特點很容易找到中位數。int treedata 100 void inorderbst bstnode proot,int count int medianinb...
兩個有序序列的中位數(二分搜尋)
問題 已知有兩個等長的非降序序列 s1,s2,設計函式求s1與 s2並集的中位數。有序序列a 0 a 1 a n 1 的中位數指a n 1 2 的值,即第 n 1 2 個數 a 0 為第 1個數 演算法描述 輸入兩個長度自定且等長的陣列,然後對他們進行賦值。演算法的思路是分別取他們的中位數進行比較,...
二分 尋找兩個正序陣列的中位數
力扣 尋找兩個正序陣列的中位數 hard 如下圖所示,中位數必然滿足這樣的分割線,將兩個陣列分別分為兩個部分,最終組成四個部分,分別為t1 left,t1 right,t2 left,t2 right,其中t1代表第乙個陣列,t2代表第二個陣列,left 代表分割線左邊的部分,right 代表分割線...