一天一道筆試題之常用演算法的複雜度

2021-08-19 10:08:12 字數 353 閱讀 4097

陣列a由1000w個隨機正整數(int)組成,設計演算法,給定整數n,在a中找出符合如下等式:n=a+b的a和b,說明演算法思路以及時間複雜度是多少?

參***

方法一、陣列排序,二分 1000w數字存到陣列中,需要的位址空間為1000w*4byte=4w kb =40 mb。這個容量是可以接受的。 將陣列

快速排序

,時間複雜度n*logn

對任給的n n=a+b a,b組合無非是 0,n 1,n-1 ... n/2-1,n/2+1 一共有n個陣列需要找出來以確定是否存在這一組。 二分查詢n次的效率是logn,由於當arr[i]>n/2時就不用查詢了,所以最終效率2*n*logn

常用演算法和複雜度總結

一天一道演算法題 之動態規劃

最近做了幾道動態規劃題,發現了其中一些規律,認真覆盤一下。先來看幾道題。1 機械人走方格 有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。注意網格中有些障礙點是不能走的。給定乙個intmap c 中為vector 表示網格圖...

一天一道演算法題 樹狀陣列

題目 模板 樹狀陣列1 樹狀陣列和線段樹差不多,可以處理區間操作,但是處理不了太複雜的區間問題。不過 比線段樹簡潔很多很多!時間複雜度都為o logn 例如,區間 1,8 儲存方式如下 1 tree 1 num 1 001 001 2 tree 2 num 2 num 1 010 010 001 3...

一天一道演算法題 線段樹

題目 模板 線段樹1 rmq問題 range minimum maximum query 和求區間和的問題可以用暴力法做,時間複雜度為o n 2 用在本題會超時,所以我們選擇線段樹做。線段樹是一種用於區間操作的資料結構,用二叉樹構造。如圖。線段樹的每個節點代表了乙個區間。防止超時,用了lazy標記。...