在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given several boxes with different colors represented by different positive numbers. Example 1: [1, 3, 2, 2, 2, 3, 4, 3, 1] Output: 23 Explanation: [1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3, 4, 3, 1] (3*3=9 points) ----> [1, 3, 3, 3, 1] (1*1=1 points) ----> [1, 1] (3*3=9 points) ----> [] (2*2=4 points) Note: The number of boxes 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。 示例 1: [1, 3, 2, 2, 2, 3, 4, 3, 1] 输出: 23 解释: [1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3, 4, 3, 1] (3*3=9 分) ----> [1, 3, 3, 3, 1] (1*1=1 分) ----> [1, 1] (3*3=9 分) ----> [] (2*2=4 分) Runtime: 1784 ms
Memory Usage: 21.6 MB
1 class Solution { 2 func removeBoxes(_ boxes: [Int]) -> Int { 3 var n:Int = boxes.count 4 var dp = [[[Int]]](repeating: [[Int]](repeating: [Int](repeating: 0, count: n), count: n), count: n) 5 for i in 0..<n 6 { 7 for k in 0...i 8 { 9 dp[i][i][k] = (1 + k) * (1 + k) 10 } 11 } 12 for t in 1..<n 13 { 14 for j in t..<n 15 { 16 var i:Int = j - t 17 for k in 0...i 18 { 19 var res:Int = (1 + k) * (1 + k) + dp[i + 1][j][0] 20 for m in (i + 1)...j 21 { 22 if boxes[m] == boxes[i] 23 { 24 res = max(res, dp[i + 1][m - 1][0] + dp[m][j][k + 1]) 25 } 26 } 27 dp[i][j][k] = res 28 } 29 } 30 } 31 return n == 0 ? 0 : dp[0][n - 1][0] 32 } 33 }
|
请发表评论