【问题描述】[中等]

【解答思路】


1. 动态规划

时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public int minimumOperations(String leaves) {if (leaves == null || leaves == "") {   // 排除 不合法参数情况return 0;}int length = leaves.length();char[] chars = leaves.toCharArray();/*状态数组,state[i][j]中:i表示终止下标j表示:0为左半边,1为中间部分,2为右半边state[i][j] 表示 从0到i需要调整的叶子数*/int[][] state = new int[length][3];/*记录 已知状态数组元素:1、第一个叶子,必须是左半部分,所以只需判断是不是 黄色叶子 即可2、第一个叶子,必须是左半部分,所以 state[0][1] 和 state[0][2] 都是无效的3、第二个叶子,可以是左半部分,也可以是中间部分,但是不能是右半部分(每个区间必须有叶子),因此 state[1][2]是无效的*/state[0][0] = chars[0] == 'y' ? 1 : 0;state[0][1] = state[0][2] = state[1][2] = Integer.MAX_VALUE;int isYellow = 0;   // 判断 当前遍历的叶子 是不是 黄色/*遍历 原叶集,生成状态数组*/for (int i = 1; i < length; i++) {isYellow = chars[i] == 'y' ? 1 : 0;state[i][0] = state[i - 1][0] + isYellow;state[i][1] = Math.min(state[i - 1][0], state[i - 1][1]) + (1 - isYellow);if (i > 1) {    // 右半部分 的叶子 必须是第2个元素之后的元素state[i][2] = Math.min(state[i - 1][1], state[i - 1][2]) + isYellow;}}/*最终结果 为 state[length - 1][2]因为 state[i][j]最终结果的 i 必须为 length - 1,state[length - 1][j] 中的 j 必须为2*/return state[length - 1][2];}
}

【总结】

1. 动态规划流程

第 1 步:设计状态
第 2 步:状态转移方程
第 3 步:考虑初始化
第 4 步:考虑输出
第 5 步:考虑是否可以状态压缩

2.画图理解 动态规划不可能一步到位的

【数据结构与算法】【算法思想】动态规划

参考链接:https://leetcode-cn.com/problems/UlBDOe/solution/java-quan-zhu-shi-li-jie-dong-tai-gui-hua-by-leetc/
参考链接:https://leetcode-cn.com/problems/UlBDOe/solution/dong-tai-gui-hua-java-qiu-xie-shou-cang-ji-by-crus/

[Leetcode][LCP 19][JAVA][秋叶收藏集][动态规划]相关推荐

  1. leetcodeLCP 19. 秋叶收藏集/动态规划

    文章目录 题目: 基本思想:动态规划 题目: 小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字 ...

  2. LCP 15:秋叶收藏集(动态规划||前缀和)

    小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶. ...

  3. 秋叶收藏集, 动态规划 leetcode LCP 19

    小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶. ...

  4. LeetCode LCP 19 秋叶收藏集 HERODING的LeetCode之路

    小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶. ...

  5. leetcode LCP 19. 秋叶收藏集(dp)

    小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶. ...

  6. LCP 19. 秋叶收藏集

    链接:LCP 19. 秋叶收藏集 class Solution {public:int minimumOperations(string leaves) {vector<vector<in ...

  7. 力扣算法题-19.秋叶收藏集 C语言实现

    题目 小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片 ...

  8. 诗意的题目 秋叶收藏集

    https://leetcode-cn.com/problems/UlBDOe/solution/qiu-xie-shou-cang-ji-by-leetcode-solution/ 这个动态规划还是 ...

  9. LeetCode——LCP 29. 乐团站位[简单]——分析及代码(Java)

    LeetCode--LCP 29. 乐团站位[简单]--分析及代码[Java] 一.题目 二.分析及代码 1. 直接计算 (1)思路 (2)代码 (3)结果 三.其他 一.题目 某乐团的演出场地可视作 ...

最新文章

  1. 网站互点排名掉了网站互点排名掉了网站互点_7天上百度首页排名优化技巧有哪些?...
  2. 高德地图自定义点标记大小_Vue:如何在地图上添加自定义覆盖物(点)
  3. 客户关系管理SAP整体解决方案
  4. STM32开发 -- UTC、UNIX时间戳、北京时间之间的转换
  5. Linux从零开始(二、基础命令(续二)解压 tar)
  6. PXC5.7(Percona XtraDB Cluster)+HAproxy集群部署
  7. group by分组、having() 筛选组的用法
  8. 将z-blog改成英文blog所遇到的问题
  9. scala特性_Scala | 特性应用
  10. 支付宝五福53张自动领取程序 v2021
  11. 7.python实现高效端口扫描器之nmap模块
  12. wdatepicker时间段控制
  13. 平面设计中的网格系统pdf_哪些设计师必看平面设计书籍,写给设计师
  14. PS2手柄移植到STM32上面的小笔记
  15. 2020邮储银行实习面试经验
  16. Spring boot集成RabbitMQ(山东数漫江湖)
  17. 求二元函数最大值matlab,利用matlab, 二元函数求最大值
  18. pygame的游戏窗口退出办法
  19. PDF文件字体嵌入问题
  20. 一个大数据架构师应该掌握的技能

热门文章

  1. 设计模式4-创建型模式-Prototype模式
  2. 诗歌rials 之RJS的tips
  3. [译作]Class in Jscript Part I
  4. 68-Flutter中极光推送的使用
  5. 12-Flutter移动电商实战-首页导航区域编写
  6. 关于CI框架引入CSS与JS文件
  7. mongoose查找若存在,则什么都不做,若不存在,则插入
  8. 使用ViewPager制作Android引导界面
  9. 输入字符串统计字符串中每个字符出现的次数
  10. 【常见笔试面试算法题12】动态规划算法案例分析