左神牛課網講座第二發 演算法講解

2022-02-06 14:03:20 字數 1241 閱讀 6482

從5隨機到7隨機及其擴充套件

【題目】 給定乙個等概率隨機產生1~5的隨機函式rand1to5如下: public

intrand1to5()

除此之外不能使用任何額外的隨機機制,請用rand1to5實現等概率隨機產生1~7的隨機函式rand1to7。 【補充題目】

給定乙個以p概率產生0,以1-p概率產生1的隨機函式rand01p如下:

public

intrand01p() 除此之外不能使用任何額外的隨機機制,請用rand01p實現等概率隨機產生1~6的隨機函式rand1to6。 【高階題目】

給定乙個等概率隨機產生1~m的隨機函式rand1tom如下:

public

int rand1tom(int

m) 除此之外不能使用任何額外的隨機機制。有兩個輸入引數分別為m和n,請用rand1tom(m)實現等概率隨機產生1~n的隨機函式 rand1ton。

【題目】

1. publicintrand1to5()4.

5. publicintrand1to7() while (num > 20

);10. returnnum%7+1

;11. }

【題目】 給定乙個無序陣列arr,求出需要排序的最短子陣列長度。 例如:

arr = [1,5,3,4,2,6,7] 返回4,因為只有[5,3,4,2

]需要排序。

【解】: 時間複雜度: o(n) 額外空間複雜度: o(1)

先左→右,找出max

再右→左,找min 因為求的是需要排序的最短子陣列長度。

1. 2. 3. 4. 5. 6. 7. 8. 9

.10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21

.publicintgetminlength(

intarr)

int min = arr[arr.length - 1

];int nominindex = -1; for(inti=arr.length-2;i!=-1;i--)

else

}if (nominindex == -1)

int max = arr[0

];int nomaxindex = -1

;for (int i = 1; i != arr.length; i++)

else

}return nomaxindex - nominindex + 1; }

左神牛課網講座第一發 演算法講解

給定 乙個字串str和它的 乙個最長回 文 子串行strlps,返回字串str在任意 位置新增最少字元後,整體都是回 文串的其中 一種結果。例如 str ab1c2de34f3ghj21kl strlps 1234321 返回 ablk1c2dejhg3f4f3ghjed2c1klba 解答 1,依...

2019牛課多校第二場F

本蒟蒻的部落格 有2n個人,任意兩個人之間有乙個競爭值,將這2n個人分成兩組,每組n個人,只有在不同組的兩人之間才計算他們的競爭值,問可以獲得的最大競爭值是多少。1 n 14 1 leq n leq 14 1 n 14 暴力列舉,一共有c 2814 40116600 c 40116600 c2814...

左神演算法 基礎班第二課 一 荷蘭國旗

問題 荷蘭國旗問題,給定乙個陣列,讓小於0的在左邊,大於0的在右邊,0在中間 如輸入 1,2,3,0,3,0 輸出 2,3,0,0,3,1 思路 設定3個游標l 0,r n 1,current 0 l的左邊小於0,r的右邊大於0,中間為0 三種情況 a current 0時,swap a curre...