日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Swift]LeetCode1035.不相交的线 | Uncrossed Lines

發布時間:2023/11/29 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Swift]LeetCode1035.不相交的线 | Uncrossed Lines 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
?微信公眾號:山青詠芝(shanqingyongzhi)
?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
?GitHub地址:https://github.com/strengthen/LeetCode
?原文地址:https://www.cnblogs.com/strengthen/p/10783476.html?
?如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
?原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

We write the integers of?A?and?B?(in the order they are given) on two separate horizontal lines.

Now, we may draw a straight line connecting two numbers?A[i]?and?B[j]?as long as?A[i] == B[j], and the line we draw does not intersect any other connecting (non-horizontal) line.

Return the maximum number of connecting lines we can draw in this way.

Example 1:

Input: A = [1,4,2], B = [1,2,4] Output: 2 Explanation: We can draw 2 uncrossed lines as in the diagram. We cannot draw 3 uncrossed lines, because the line from A[1]=4 to B[2]=4 will intersect the line from A[2]=2 to B[1]=2.

Example 2:

Input: A = [2,5,1,2,5], B = [10,5,2,1,5,2] Output: 3

Example 3:

Input: A = [1,3,7,1,7,5], B = [1,9,2,5,1] Output: 2

Note:

  • 1 <= A.length <= 500
  • 1 <= B.length <= 500
  • 1 <= A[i], B[i] <= 2000?

  • ?我們在兩條獨立的水平線上按給定的順序寫下?A?和?B?中的整數。

    現在,我們可以繪制一些連接兩個數字?A[i]?和?B[j]?的直線,只要?A[i] == B[j],且我們繪制的直線不與任何其他連線(非水平線)相交。?

    以這種方法繪制線條,并返回我們可以繪制的最大連線數。

    示例 1:

    輸入:A = [1,4,2], B = [1,2,4] 輸出:2 解釋: 我們可以畫出兩條不交叉的線,如上圖所示。 我們無法畫出第三條不相交的直線,因為從 A[1]=4 到 B[2]=4 的直線將與從 A[2]=2 到 B[1]=2 的直線相交。

    示例 2:

    輸入:A = [2,5,1,2,5], B = [10,5,2,1,5,2] 輸出:3?

    示例 3:

    輸入:A = [1,3,7,1,7,5], B = [1,9,2,5,1] 輸出:2

    提示:?

  • 1 <= A.length <= 500
  • 1 <= B.length <= 500
  • 1 <= A[i], B[i] <= 2000

  • 76ms 1 class Solution { 2 func maxUncrossedLines(_ A: [Int], _ B: [Int]) -> Int { 3 var dp = Array(repeating: Array(repeating: 0, count: B.count), count: A.count) 4 var res = 0 5 for row in 0 ..< A.count { 6 for col in 0 ..< B.count { 7 dp[row][col] = max(col > 0 ? dp[row][col - 1] : 0, row > 0 ? dp[row - 1][col] : 0) 8 if A[row] == B[col] { 9 dp[row][col] = max(dp[row][col], col > 0 && row > 0 ? dp[row - 1][col - 1] + 1 : 1) 10 11 res = max(res, dp[row][col]) 12 } 13 } 14 } 15 return res 16 17 } 18 }

    Runtime:?84 ms

    Memory Usage:?18.7 MB? 1 class Solution { 2 func maxUncrossedLines(_ A: [Int], _ B: [Int]) -> Int { 3 let n:Int = A.count 4 let m:Int = B.count 5 var dp:[[Int]] = [[Int]](repeating:[Int](repeating: 0, count:m + 1),count:n + 1) 6 dp[0][0] = 0 7 for i in 1...n 8 { 9 for j in 1...m 10 { 11 if A[i - 1] == B[j - 1] 12 { 13 dp[i][j] = dp[i - 1][j - 1] + 1 14 } 15 else 16 { 17 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) 18 } 19 } 20 } 21 return dp[n][m] 22 } 23 }

    92ms

    1 class Solution { 2 func maxUncrossedLines(_ A: [Int], _ B: [Int]) -> Int { 3 var dp = [[Int]](repeating: [Int](repeating: 0, count: B.count+1), count: A.count+1) 4 for i in 1...A.count { 5 for j in 1...B.count { 6 if A[i - 1] == B[j - 1] { 7 dp[i][j] = 1 + dp[i - 1][j - 1] 8 } else { 9 dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) 10 } 11 } 12 } 13 return dp[A.count][B.count] 14 } 15 }

    196ms

    1 class Solution { 2 var dp = [[Int?]]() 3 var arrA = [Int]() 4 var arrB = [Int]() 5 func maxUncrossedLines(_ A: [Int], _ B: [Int]) -> Int { 6 arrA = A 7 arrB = B 8 dp = Array(repeating: Array(repeating: nil, count: B.count), count: A.count) 9 10 return helper(startA: 0, startB: 0) 11 } 12 13 private func helper(startA: Int, startB: Int) -> Int { 14 if let result = dp[startA][startB] { 15 return result 16 } 17 18 if startA == arrA.count - 1 && startB == arrB.count - 1 { 19 let result = arrA[startA] == arrB[startB] ? 1 : 0 20 dp[startA][startB] = result 21 return result 22 } 23 24 if startA == arrA.count - 1 || startB == arrB.count - 1{ 25 let a = arrA[startA] 26 let b = arrB[startB] 27 let result: Int 28 if a == b { 29 result = 1 30 } else if startA == arrA.count - 1 { 31 result = helper(startA: startA, startB: startB + 1) 32 } else { 33 result = helper(startA: startA + 1, startB: startB) 34 } 35 36 dp[startA][startB] = result 37 return result 38 } 39 40 let a = arrA[startA] 41 let b = arrB[startB] 42 let result: Int 43 if a == b { 44 result = helper(startA: startA + 1, startB: startB + 1) + 1 45 } else { 46 result = max( 47 helper(startA: startA + 1, startB: startB), 48 helper(startA: startA, startB: startB + 1) 49 ) 50 } 51 52 dp[startA][startB] = result 53 return result 54 } 55 }

    ?

    轉載于:https://www.cnblogs.com/strengthen/p/10783476.html

    總結

    以上是生活随笔為你收集整理的[Swift]LeetCode1035.不相交的线 | Uncrossed Lines的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 爆操巨乳美女 | 日韩黄色片网站 | 99re久久| 久久五月天婷婷 | 久热免费在线视频 | 一区二区三区日韩在线 | 欧美国产一区二区三区 | www.久久网 | 美女福利视频在线 | 亚洲AV无码国产成人久久 | 狠狠久| 一区精品在线 | 欧美1区| 不卡av网站 | 国产成人高清 | 开心激情久久 | 久久国产a | 精品免费国产一区二区三区 | 性爱视频日本 | 久久亚洲AV成人无码一二三 | 欧美日韩国产一区二区在线观看 | 丝袜综合网 | 国模私拍一区二区 | 国产男人的天堂 | 亚洲熟妇毛茸茸 | 特级西西444www高清大胆免费看 | 久久无码精品丰满人妻 | 干爹你真棒插曲mv在线观看 | 日韩精品人妻一区二区三区免费 | 最污网站在线观看 | 波多野结衣在线一区二区 | 天堂网视频在线 | 又黄又爽一区二区三区 | 久久久久亚洲AV成人无在 | 日日天天 | 久久99中文字幕 | 天天干天天色天天 | 老司机午夜在线 | 欧美一级免费在线观看 | 亚洲A∨无码国产精品 | 人人看人人插 | av免费观看网址 | 国产在线自 | 日韩动漫av| 丁香花婷婷| 亚洲性xxx| 精品午夜一区二区三区在线观看 | 人妻中文字幕一区二区三区 | 欧美一区二区人人喊爽 | 风间ゆみ大战黑人 | 激情网久久 | 三度诱惑免费版电影在线观看 | 日本在线观看中文字幕 | 国产精品电影 | 免费污片软件 | 污污视频在线免费观看 | 黄网站在线观看视频 | 色播在线| 四虎在线看片 | 精品国产理论 | 欧美精品一区二 | 66精品| 九七影院在线观看免费观看电视 | 五月天色网站 | 夫の上司に犯波多野结衣853 | 在线观看视频日韩 | 亚洲高清在线一区 | 狠狠一区二区 | 奇米影视中文字幕 | 一级性生活黄色片 | 国产精品视频一二区 | 国产午夜成人久久无码一区二区 | 欧美在线视频a | 91免费看视频| 久久久久国产精品 | 日本打白嫩屁股视频 | 韩国精品在线观看 | 91官网在线观看 | 老熟妇仑乱一区二区视频 | 男女av免费 | heyzo久久 | 日韩专区欧美专区 | av大片网站 | 91操人| 91av麻豆| 手机免费看av | 91大神久久 | 国外成人在线视频 | 手机免费av | 欧美aaa级 | 久久久久久久综合色一本 | 久久中文字幕精品 | 三级在线观看网站 | 实拍女处破www免费看 | 山村大伦淫第1部分阅读小说 | 国产成人三级一区二区在线观看一 | avav亚洲 | 国产 丝袜 欧美中文 另类 | 国产成人精品视频在线 |