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:中等
給定兩個字串text1
和text2
,返回這兩個字串的最長公共子串行的長度。
乙個字串的 _子串行 _是指這樣乙個新的字串:它是由原字串在不改變字元的相對順序的情況下刪除某些字元(也可以不刪除任何字元)後組成的新字串。
例如,「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.精益六西格瑪管理方法,因為其...