資料結構之二分與並查集

2021-09-26 03:16:11 字數 1267 閱讀 1197

二分-leetcode 287. 尋找重複數

給定乙個包含 n + 1 個整數的陣列 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。

示例 1:

輸入: [1,3,4,2,2]

輸出: 2

示例 2:

輸入: [3,1,3,4,2]

輸出: 3

說明:不能更改原陣列(假設陣列是唯讀的)。

只能使用額外的 o(1) 的空間。

時間複雜度小於 o(n^2) 。

陣列中只有乙個重複的數字,但它可能不止重複出現一次。

class solution 

double fx(double x)

int main()

else if(now>0)

r=mid;

else l=mid;

}printf("%.4f\n",ans);}}

並查集-nowcoder 加邊的無向圖

給你乙個 n 個點,m 條邊的無向圖,求至少要在這個的基礎上加多少條無向邊使得任意兩個點可達~ 

第一行兩個正整數 n 和 m 。

接下來的m行中,每行兩個正整數 i 、 j ,表示點i與點j之間有一條無向道路。

輸出乙個整數,表示答案
示例1

4 2

1 23 4

1
對於100%的資料,有n,m<=100000。

#includeusing namespace std;

const int maxn=1e5+5;

int n,m,fa[maxn];

void init()

int find_root(int x)

return x;

}void union_both(int u,int v)

int main()

int ans=0;

for(int i=1;i<=n;i++) if(fa[i]==i) ans++;

printf("%d\n",ans-1);

}

資料結構之二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成...

資料結構之二分查詢

上面我們介紹了順序查詢,但是它的時間複雜度為o n 讓人很受傷啊,所以有了二分查詢,二分查詢是乙個時間複雜度為o logn 的演算法,當然都是說的一般情況下,二分 二分,看名字就知道它的核心是什麼了,就是不斷地額逼近查詢值。include define max len 20 typedef stru...

資料結構之二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成...