Task02 動態規劃

2021-10-23 16:50:59 字數 3846 閱讀 6102

1.最長回文子串

class

solution

:def

longestpalindrome

(self, s:

str)

->

str:

n =len(s)

dp =[[

false

]* n for _ in

range

(n)]

ans =

""# 列舉子串的長度 l+1

for l in

range

(n):

# 列舉子串的起始位置 i,這樣可以通過 j=i+l 得到子串的結束位置

for i in

range

(n):

j = i + l

if j >=

len(s)

:break

if l ==0:

dp[i]

[j]=

true

elif l ==1:

dp[i]

[j]=

(s[i]

== s[j]

)else

: dp[i]

[j]=

(dp[i +1]

[j -1]

and s[i]

== s[j]

)if dp[i]

[j]and l +

1>

len(ans)

: ans = s[i:j+1]

return ans

編輯距離

class

solution

:def

mindistance

(self, word1, word2)

:"""

:type word1: str

:type word2: str

:rtype: int

"""n =

len(word1)

m =len(word2)

# 有乙個字串為空串

if n * m ==0:

return n + m

# dp 陣列

d =[[

0]*(m +1)

for _ in

range

(n +1)

]# 邊界狀態初始化

for i in

range

(n +1)

: d[i][0

]= i

for j in

range

(m +1)

: d[0]

[j]= j

# 計算所有 dp 值

for i in

range(1

, n +1)

:for j in

range(1

, m +1)

: left = d[i -1]

[j]+

1 down = d[i]

[j -1]

+1left_down = d[i -1]

[j -1]

if word1[i -1]

!= word2[j -1]

: left_down +=

1 d[i]

[j]=

min(left, down, left_down)

return d[n]

[m]

打家劫舍

class

solution

:def

rob(self, nums: list[

int])-

>

int:

ifnot nums:

return

0 size =

len(nums)

if size ==1:

return nums[0]

dp =[0

]* size

dp[0]

= nums[0]

dp[1]

=max

(nums[0]

, nums[1]

)for i in

range(2

, size)

: dp[i]

=max

(dp[i -2]

+ nums[i]

, dp[i -1]

)return dp[size -

1]

打家劫舍ii

class

solution

:def

rob(self, nums:

[int])

->

int:

defmy_rob

(nums)

: cur, pre =0,

0for num in nums:

cur, pre =

max(pre + num, cur)

, cur

return cur

return

max(my_rob(nums[:-

1]),my_rob(nums[1:

]))if

len(nums)!=1

else nums[

0]

5.最長回文子串行

class

solution

:def

longestpalindromesubseq

(self, s:

str)

->

int:

n =len(s)

maxl =-1

dp =[[

0]*n for _ in

range

(n)]

for i in

range

(n):

dp[i]

[i]=

1for i in

range

(n-1,-

1,-1

):for j in

range

(i+1

, n)

:if s[i]

== s[j]

: dp[i]

[j]= dp[i+1]

[j-1]+

2else

: dp[i]

[j]=

max(dp[i]

[j-1

], dp[i+1]

[j])

return dp[0]

[n-1

]

6.最長連續遞增序列

class

solution

(object):

deffindlengthoflcis

(self, nums)

: ans = anchor =

0for i in

range

(len

(nums)):

if i and nums[i-1]

>= nums[i]

: anchor = i

ans =

max(ans, i - anchor +1)

return ans

Task02 幾何變換

該部分將對基本的幾何變換進行學習,幾何變換的原理大多都是相似,只是變換矩陣不同,因此,我們以最常用的平移和旋轉為例進行學習。在深度學習領域,我們常用平移 旋轉 映象等操作進行資料增廣 在傳統cv領域,由於某些拍攝角度的問題,我們需要對影象進行矯正處理,而幾何變換正是這個處理過程的基礎,因此了解和學習...

新聞推薦競賽 task02

資料分析的價值主要在於熟悉了解整個資料集的基本情況包括每個檔案裡有哪些資料,具體的檔案中的每個字段表示什麼實際含義,以及資料集中特徵之間的相關性,在推薦場景下主要就是分析使用者本身的基本屬性,文章基本屬性,以及使用者和文章互動的一些分布,這些都有利於後面的召回策略的選擇,以及特徵工程。建議 當特徵工...

python基礎訓練task02

我們準備利用17天時間,將 python 基礎的刻意練習分為如下任務 task01 變數 運算子與資料型別 1day task02 條件與迴圈 1day task03 列表與元組 2day task04 字串與序列 1day task05 函式與lambda表示式 2day task06 字典與集合...