跟著左神學演算法1 0 字首和陣列 對數器和隨機行為

2022-07-12 06:09:09 字數 746 閱讀 1007

1.求乙個陣列從某個下標開始到某個下標結束的累加和?

eg:arr[10] =

思路1:新增乙個temp陣列,此陣列的目的是求出從初始位置當前位置的累加和:temp[10] = ,然後不論是求下標多少到多少的累加和,只需要求出temp下標後面數減去前面數下標的差即可:

eg:求下標3-7的累加和:temp[7]-[3] = 68-43 = 25(下標從0開始)

思路2:當查詢量過大的時候,可以考慮如下方法:

新增乙個temp二維陣列,也是求累加和,此時只需要求從初始位置當前位置的累加和(二維陣列只需要求對角線之上的即可):

當球下標3-7的累加和只需要temp[3][7]即可。

2.math.random()方法:返回乙個double型別的從0-1左閉右開的隨機數。

2.1如何得到乙個從0-1左閉右開,但是出現的機率是x*x的概率的數?

math.max(math.random(),math.random());

原因:eg:想得到乙個0-0.3的數,第一次radom得到某0-0.3數的概率是0.3,只有當第二個也小於0-0.3,才會返回0-0.3的數字,所以概率是x*x。

那麼:math.min(math.random(),math.random());得到的概率是什麼? 得到在0-0.3概率是:不好直接求,所以我們求不在0-0.3上的概率:(1-x)*(1-x),然後再求在0-0.3:  1-(1-x)*(1-x),正面:第乙個是0-0.3,第二個也是;第乙個是,第二個不是;第乙個不是,第二個是。

左神演算法 RandomPool

題目 設計一種結構,在該結構中有如下三個功能 insert key 將某個key加入到該結構,做到不重複加入。delete key 將原本在結構中的某個key移除。getrandom 等概率隨機返回結構中的任何乙個key。要求 insert delete和getrandom方法的時間複雜度都是 o ...

左神演算法筆記01

對數器異或工具 一些其它的位運算子的操作 簡單理解為 將乙個演算法的所有操作拆成基本操作 常數時間完成的操作 後,計算出操作次數和操作時間 可視為1 的乘積,即操作次數之和。在考慮最差情況時用o 來表示時間複雜度,取最高項來表示。如o n o logn 對n個數進行排列,則最差要進行1 2 3 n ...

左神演算法筆記03

可以是函式遞迴,也可以是迴圈實現。將大的陣列對半分為兩個陣列,每個陣列排好序後再合併為大的陣列。如果使用迴圈實現,要提防整形溢位 應用 最小和問題,若陣列的左邊的乙個數比右邊的某乙個數小,在返回結果加上自身的大小 public static intprocess int arr,int l,int ...