演算法刻意練習第一天 複雜度分析以及學習方法

2021-10-04 13:58:54 字數 856 閱讀 8957

演算法時間複雜度分析,複雜度越低,大資料量,高併發環境下,收益很高

1 + 2 + 3+ … + n

求和公式: y = n*(n+1)/2

fibonacci 時間複雜度計算

f(n) = f(n-1) + f(n-2)

時間複雜度:o(2^n) 並不是特別有效的演算法

查用查詢演算法的時間複雜度是多少:

二分查詢 – log(n)

二叉樹遍歷 o(n)

二維度矩陣 o(n)

快排 --n*log(n)

訓練演算法和資料結構的**:

三分學習,7分練

堅持、刻意練習,不要只做自己會做的題,而要做常考的演算法,自己不會的題,如動態規劃等

訓練的時候,不爽,不舒適,正常的,跳出自己的舒適區,說明你在成長

訓練演算法的**:leetcode

1、資料的範圍,比較陰險的地方。

2、所有的演算法解法,都找到,找到時間和空間複雜度最優的

1、o(n^2) 解法,直接兩層for迴圈求解

2、定義乙個map儲存上乙個值,key:儲存陣列之前位置對應的數值,value儲存數值對應的位置

由於hashmap key查詢時間複雜度為o(1),利用這一特性,在通過target - 陣列當前遍歷的值 ,去hashmap中查詢,如果查詢到的話,即返回。

class

solution

else

}return position;

}}

3、官方提供三種解法,第一種,兩層迴圈,第二種,兩次迴圈,第三種,一層迴圈;

最好通過看solution 進行學習對比,對比自己的**,找到優勢和不足

堅持!!!

演算法練習 第一天

求1 1!1 3!1 5!1 7!1 n 1 2n 1 下面的演算法時間複雜度為o n 2 public class leijia leicheng sum sum sign a system.out.println sign a system.out.println 結果是 sum 求1 1!1 ...

python第一天練習

1.有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?for i in range 1,5 for j in range 1,5 for k in range 1,5 if i k and i j and j k print i,j,k 2.利用條件運算子的巢狀來完成此...

python練習 第一天

from math import sqrt class point object 描述平面上的點 def init self,x,y param x 橫座標 param y 縱座標 self.x x self.y y defmove to self,x,y 移動到某點的方法 param x 目標點的...