LeetCode 1246. 删除回文子数组(区间DP)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1246. 删除回文子数组(区间DP)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個整數數組 arr,每一次操作你都可以選擇并刪除它的一個 回文 子數組 arr[i], arr[i+1], ..., arr[j]( i <= j)。
注意,每當你刪除掉一個子數組,右側元素都會自行向前移動填補空位。
請你計算并返回從數組中刪除所有數字所需的最少操作次數。
示例 1: 輸入:arr = [1,2] 輸出:2示例 2: 輸入:arr = [1,3,4,1,5] 輸出:3 解釋:先刪除 [4],然后刪除 [1,3,1],最后再刪除 [5]。提示: 1 <= arr.length <= 100 1 <= arr[i] <= 20來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/palindrome-removal
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- dp[i][j] 表示區間 [i,j] 的最少移除次數
- 如果已知 dp[i][j],推導dp[i-1][j+1]
- 如果兩側相等 arr[i-1] == arr[j+1],dp[i-1][j+1] = min(dp[i-1][j+1], dp[i][j])
- 對區間而言,把區間分成任意的兩份,求和取最小
對所有可能的 k,dp[i-1][j+1] = min(dp[i-1][j+1], dp[i-1][k]+dp[k+1][j+1])
440 ms 12.9 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1246. 删除回文子数组(区间DP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1287. 有序数组中
- 下一篇: LeetCode 1085. 最小元素各