leetcode LCP 19. 秋叶收藏集(dp)
生活随笔
收集整理的這篇文章主要介紹了
leetcode LCP 19. 秋叶收藏集(dp)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小扣出去秋游,途中收集了一些紅葉和黃葉,他利用這些葉子初步整理了一份秋葉收藏集 leaves, 字符串 leaves 僅包含小寫字符 r 和 y, 其中字符 r 表示一片紅葉,字符 y 表示一片黃葉。
出于美觀整齊的考慮,小扣想要將收藏集中樹葉的排列調整成「紅、黃、紅」三部分。每部分樹葉數量可以不相等,但均需大于等于 1。每次調整操作,小扣可以將一片紅葉替換成黃葉或者將一片黃葉替換成紅葉。請問小扣最少需要多少次調整操作才能將秋葉收藏集調整完畢。
代碼
class Solution {public int minimumOperations(String leaves) {int n=leaves.length();int[][] dp=new int[n][3];//int[n][3]代表3部分 紅 黃 紅 數組內數字代表需要的步數dp[0][0]=leaves.charAt(0)=='r'?0:1;dp[0][1]=dp[1][2]=dp[0][2]=Integer.MAX_VALUE;//不同顏色的葉子至少為一片for(int i=1;i<n;i++){int ir=leaves.charAt(i)=='r'?1:0;int iy=leaves.charAt(i)=='y'?1:0;dp[i][0]=dp[i-1][0]+iy;//由第一部分的轉移過來dp[i][1]= Math.min(dp[i-1][0],dp[i-1][1])+ir;//由第二部分或者第一部分轉移過來if(i>=2)dp[i][2]= Math.min(dp[i-1][1],dp[i-1][2])+iy;//由第二部分或者第三部分轉移過來}return dp[n-1][2];} }總結
以上是生活随笔為你收集整理的leetcode LCP 19. 秋叶收藏集(dp)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到猫狗怀孕怎么回事
- 下一篇: 梦到打死蛇和老鼠是什么意思