Leetcode 02動態規劃

2021-10-23 13:56:05 字數 2785 閱讀 9070

ac**

72. 編輯距離

198. 打家劫舍

213. 打家劫舍 ii

516. 最長回文子串行

674. 最長連續遞增序列

題目鏈結

class

solution}}

return result;

}bool

ispalindrome

(string s)

}return

true

;//判斷完是回文串}}

;

參考解答

class

solution

string result(""

);int ssize =

int(s.

size()

);string reverses=s;

reverse

(reverses.

begin()

, reverses.

end())

; vector<

int>

tmpvec

(ssize,0)

; vectorint>>

store

(ssize,tmpvec)

;int maxlength =

0, end =0;

for(

int i=

0;i)else}if

(store[i]

[j]>maxlength)}}

} result = s.

substr

(end+

1-maxlength, maxlength)

;return result;}}

;

class

solution

string result(""

);int ssize=

int(s.

size()

);vector<

bool

>

store

(ssize,

false);

int start=

0,end=

0, maxlen=0;

for(

int j=

0;j} result=s.

substr

(start, end-start+1)

;return result;}}

;

編輯距離

題解

class

solution

for(

int j=

0;j1;j++

)//計算所有的dp值

for(

int i =

1;i< n+

1;i++

) d[i]

[j]=

min(left,

min(down, left_down));

}}return d[n]

[m];}}

;

題目鏈結

參***

class

solution

int size=nums.

size()

;if(size==1)

//動態規劃找出通式

vector<

int> dp=vector<

int>

(size,0)

; dp[0]

=nums[0]

; dp[1]

=max

(nums[0]

,nums[1]

);for(

int i=

2;i)return dp[size-1]

;}};

題目鏈結

分析

class

solution

else

if(n<4)

int dp[n][2

];//邊界情況

dp[0]

[0]=

0;//沒偷第0家,偷到前0家的最大金額為0;

dp[0]

[1]=nums[0]

;//有偷第0家,偷到前0家的最大金額為nums[0];

dp[1]

[1]=nums[0]

;//有偷第0家,偷到前0家的最大金額為nums[0]

dp[1]

[0]=nums[1]

;//沒偷第0家,偷到前1家的最大金額為nums[1]

for(

int i=

2;i)else

}//返回兩種偷法中金額較大的一種

return

max(dp[n-1]

[0],dp[n-1]

[1])

;}};

題目鏈結

題解

class

solution

else}}

return f[0]

[n-1];

}};

題目鏈結

class

solution

else

len=1;

}}if(len>max) max=len;

//連續遞增的時候

return max;}}

};

leetcode02 兩數相加

隨機一題 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 思路 剛開始很蠢的我居然乙個乙個讀...

LeetCode 02 兩數相加

definition for singly linked list.class listnode def init self,x self.val x self.next none class solution def addtwonumbers self,l1 listnode,l2 listno...

leetcode 02 兩數相加

leetcode題目鏈結 題目要求 個鍊錶 逆序表示十進位制樹,按位數 兩兩相加。這題 我的的思路就是從個位慢慢往上加 如果加起來的值超過10,就要進製,新建節點的值為1。class solution def addtwonumbers self,l1 listnode,l2 listnode li...