7月6日的五題

2021-10-07 20:02:46 字數 3797 閱讀 9504

difficulty:簡單

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

**注意:**給定 n 是乙個正整數。

示例 1:

輸入: 2

輸出: 2

解釋: 有兩種方法可以爬到樓頂。

1\. 1 階 + 1 階

2\. 2 階

示例 2:

輸入: 3

輸出: 3

解釋: 有三種方法可以爬到樓頂。

1\. 1 階 + 1 階 + 1 階

2\. 1 階 + 2 階

3\. 2 階 + 1 階

solution:斐波拉切數列的變形

​class

solution

return res;

}}

difficulty:中等

給定兩個字串text1text2,返回這兩個字串的最長公共子串行的長度。

乙個字串的 _子串行 _是指這樣乙個新的字串:它是由原字串在不改變字元的相對順序的情況下刪除某些字元(也可以不刪除任何字元)後組成的新字串。

例如,「ace」 是 「abcde」 的子串行,但 「aec」 不是 「abcde」 的子串行。兩個字串的「公共子串行」是這兩個字串所共同擁有的子串行。

若這兩個字串沒有公共子串行,則返回 0。

示例 1:

輸入:text1 = "abcde", text2 = "ace" 

輸出:3

解釋:最長公共子串行是 "ace",它的長度為 3。

示例 2:

輸入:text1 = "abc", text2 = "abc"

輸出:3

解釋:最長公共子串行是 "abc",它的長度為 3。

示例 3:

輸入:text1 = "abc", text2 = "def"

輸出:0

解釋:兩個字串沒有公共子串行,返回 0。

solution:動態規劃

​class

solution

else}}

return dp[len1]

[len2];}

}

difficulty:困難

給你兩個單詞 word1 和 word2,請你計算出將 word1 轉換成 word2 所使用的最少運算元 。

你可以對乙個單詞進行如下三種操作:

插入乙個字元

刪除乙個字元

替換乙個字元

示例 1:

輸入:word1 = "horse", word2 = "ros"

輸出:3

解釋:horse -> rorse (將 'h' 替換為 'r')

rorse -> rose (刪除 'r')

rose -> ros (刪除 'e')

示例 2:

輸入:word1 = "intention", word2 = "execution"

輸出:5

解釋:intention -> inention (刪除 't')

inention -> enention (將 'i' 替換為 'e')

enention -> exention (將 'n' 替換為 'x')

exention -> exection (將 'n' 替換為 'c')

exection -> execution (插入 'u')

​class

solution

//通過新增 word1中的元素

for(

int j=

1; j<=len2; j++

)for

(int i=

1; i<=len1; i++

)else}}

return dp[len1]

[len2];}

}

difficulty:中等

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用演算法**。**

示例 1:

輸入: 

[ [1,1,1],

[1,0,1],

[1,1,1]

]輸出:

[ [1,0,1],

[0,0,0],

[1,0,1]

]

示例 2:

輸入: 

[ [0,1,2,0],

[3,4,5,2],

[1,3,1,5]

]輸出:

[ [0,0,0,0],

[0,4,5,0],

[0,3,1,0]

]

高階:

solution:題目要求使用常量空間。將第0行和第0列的每個元素,作為這一行或者這一列是否出現過0的標誌位,然後再單獨處理第0行和第0列

​class

solution

}boolean columnflag =

false

;//記錄第0列是否有0

for(

int i=

0; i//找尋哪些行和哪些列要被置為0

for(

int i=

1; i}//遍歷剛剛記錄在第0行的0,如果是0則整列都為0

for(

int i=

1; i}//遍歷剛剛記錄在第0列的0,如果是0則整行都為0

for(

int i=

1; i}//如果第0行一開始就有0

if(rowflag)

}//如果第0列一開始就有0

if(columnflag)}}

}

difficulty:簡單

輸入整數陣列arr,找出其中最小的k個數。例如,輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。

示例 1:

輸入:arr = [3,2,1], k = 2

輸出:[1,2] 或者 [2,1]

示例 2:

輸入:arr = [0,1,2,1], k = 1

輸出:[0]

限制:

solution:優先佇列(小根堆)

​class

solution

for(

int i=

0; i)return res;

}}

模擬6月7日

jyx和cyy打賭,比誰24點算得快,算得慢的那個人請客。24點的規則是這樣的 給定4個1.9的整數,用括號改變運算順序,通過加 減 乘 除中的一系列運算,得到整數24。注意所有中間結果必須是整數 例如 2 2 4是允許的,而2 2 4 是不允許的 為了贏得這個比賽,請寫乙個程式幫助我作弊,快速地計...

2023年7月6日打卡

乙個機械人位於乙個 m x n 網格的左上角 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角。現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m 和 n 的值均不超過 100。原題是有圖的,但是我懶得粘過來,...

PMP 7月31日早餐題

1 專案經理被分配管理乙個專案,客戶要求十分嚴格。由於專案不確定因素很多,要求持續改進以及響應客戶反饋。專案經理應為該專案採用下列哪種方法?a.增量專案管理方法,因為專案目標不明確 b.敏捷專案管理方法,因為其快速且具有迭代性 c.傳統專案管理方法,因為其簡單且直觀 d.精益六西格瑪管理方法,因為其...