演算法每日一題 08 03

2021-10-08 19:26:58 字數 1819 閱讀 4351

給定兩個字串形式的非負整數 num1 和num2 ,計算它們的和。

注意:

num1 和num2 的長度都小於 5100.

num1 和num2 都只包含數字 0-9.

num1 和num2 都不包含任何前導零。

你不能使用任何內建 biginteger 庫, 也不能直接將輸入的字串轉換為整數形式。

class

solution

return ans.

reverse()

.tostring()

;}}

自己寫的有問題,看著官方解答,改著改著就和人家的一樣了:cry

#第二題

給你兩個單詞 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

else

dp[i]

[j]=

min(dp[i-1]

[j], dp[i]

[j-1

], dp[i-1]

[j-1])

+1;}

return dp[len1]

[len2];}

public

intmin

(int a,

int b,

int c)

}

動態規劃經典問題,主要是推導出狀態轉移方程。

給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。

此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。

注意:不能使用**庫中的排序函式來解決這道題。

示例:

輸入: [2,0,2,1,1,0]

輸出: [0,0,1,1,2,2]

高階:

乙個直觀的解決方案是使用計數排序的兩趟掃瞄演算法

首先,迭代計算出0、1 和 2 元素的個數,然後按照0、1、2的排序,重寫當前陣列。

你能想出乙個僅使用常數空間的一趟掃瞄演算法嗎?

1389a - lcm problem

#include

using

namespace std;

intmain()

}

做這個題,數學知識太重要了!!!

演算法每日一題 07 31

魔術索引。在陣列a 0 n 1 中,有所謂的魔術索引,滿足條件a i i。給定乙個有序整數陣列,編寫一種方法找出魔術索引,若有的話,在陣列a中找出乙個魔術索引,如果沒有,則返回 1。若有多個魔術索引,返回索引值最小的乙個。示例1 輸入 nums 0,2,3,4,5 輸出 0 說明 0下標的元素為0 ...

演算法每日一題 08 08

題目 include using namespace std define maxn 200010 int ton maxn in maxn 存拓撲序和入度 struct node int n,m queue int q vectorask 存無向邊 vectorans 存結果 vector int...

演算法每日一題 08 19

題目鏈結 乍一看以為要排序,竟然是個思維題。include using namespace std 將和盡量變大,這樣才能盡可能的短 int main if flag true cout 1 endl else cout n endl return0 這個題寫的沒錯,可是總是在乙個測試樣例中超時,可...