[Leetcode][LCP 19][JAVA][秋叶收藏集][动态规划]

【问题描述】[中等]

在这里插入图片描述

【解答思路】

在这里插入图片描述
在这里插入图片描述

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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三十一期:QQ for Linux 复活,微信 for Linux 还远吗?

网友通过分析龙芯处理器的生态支持计划与近期 QQ for Linux 支持 MIPS 架构的事实&#xff0c;结合当前国产自主研发的大背景&#xff0c;认为距离微信 for Linux 的发布也不远了。 10 月 24 日晚间&#xff0c;腾讯突然发布了沉寂多年的 QQ for Linux 新版本&#xff0c;引起了…

[Leetcode][第141、142题][JAVA][环形链表][哈希表][快慢指针][数学推理]

【问题描述】[中等] 【解答思路】 141 每次遍历到一个节点时&#xff0c;判断该节点此前是否被访问过。 具体地&#xff0c;我们可以使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点&#xff0c;如果该节点已经存在于哈希表中&#xff0c;则说明该链表是环形链…

样式集合

box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.3);转载于:https://www.cnblogs.com/xmyd/p/10943567.html

[Leetcode][第1002题][JAVA][查找常用字符][计数][HashMap]

【问题描述】[简单] 【解答思路】 计数法 1. minfreq存放最终重复字母的个数 freq存放每次遍历字符串的字母个数 2. minfreq初始化最大值&#xff0c;每遍历一个字符串后&#xff0c;比较minfreq[i]、freq[i]的大小&#xff0c;minfreq[i]更新为两者的最小值。 3. 根据minf…

第三十三期:连接池中非常关键的两个参数,到底是干啥用的?

说来惭愧&#xff0c;从事互联网开发好些年了&#xff0c;有些概念一直没有彻底搞清楚。其中之一就是,ttp client配置连接池的时候,maxConnectionsPerHost,和maxTotalConnections,在网上搜了一圈&#xff0c;发现很多都讲的含含糊糊的。 作者&#xff1a;资深开发讲技术 背景 …

一个密码经过多次MD5加密能否提高安全性?Java MD5盐值加解密

什么是MD5? MD5&#xff08;Message Digest Algorithm 5&#xff0c;信息摘要算法5&#xff09;&#xff0c;是计算机广泛使用的摘要算法&#xff08;又称哈希算法&#xff09;之一。MD5是将一段信息&#xff0c;通过其不可逆的字符串变换算法&#xff0c;产生了唯一的MD5信息…

[Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]

【问题描述】[中等] 【解答思路】 1. 递归 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(N) class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode next head.next;head.next swapPairs(next.next…

第三十四期:花了一个星期,我终于把RPC框架整明白了!

RPC(Remote Procedure Call)&#xff1a;远程过程调用&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的思想。 作者&#xff1a;李金葵 RPC(Remote Procedure Call)&#xff1a;远程过程调用&#xff0c;它是一种通过网络从远…

[Leetcode][第116 117题][JAVA][填充每个节点的下一个右侧节点指针][BFS][链表前驱节点]

【问题描述】[中等] 【解答思路】 1. BFS层次遍历思想 &#xff08;通用&#xff09; 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(N) public Node connect(Node root) {if (root null)return root;Queue<Node> queue new LinkedList<>();queue.add(r…

Windows Server2012 R2 无法安装.NET Framework 3.5的解决方法

Windows server 2012R2&#xff0c;自带的是.NET Framework 4.5,如果想装SQL server2008或者SQL server2012就需要安装 .ENT Framework 3.5或者2.0的版本&#xff0c;建议安装 .NET3.5 版本&#xff0c;我本人亲测过&#xff0c;成功了&#xff01; 安装不成功错误分析&#x…

第三十五期:网络爬虫是啥玩意儿?有什么用呢?

在这个用数据说话的时代&#xff0c;数据是一件极其重要的事情&#xff0c;怎样才能抓取到完整以及全面的数据呢&#xff1f;这并不是一件容易的事情。 作者&#xff1a;呦呦科学馆 如果想要做好大数据的分析&#xff0c;单单依靠一己之力或者是周边的数据是远远不够的&#x…

第三十六期:学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫&#xff0c;大家想起的估计都是 Python &#xff0c;诚然爬虫已经是 Python 的代名词之一&#xff0c;相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫&#xff0c;其实 Java 也能做网络爬虫而且还能做的非常好&#xff0c;在开源社区中有不少…

前端之盒子模型

CSS之盒子模型 margin: 用于控制元素与元素之间的距离&#xff1b;margin的最基本用途就是控制元素周围空间的间隔&#xff0c;从视觉角度上达到相互隔开的目的。padding: 用于控制内容与边框之间的距离&#xff1b;Border(边框): 围绕在内边距和内容外的边框。Content(内容): …

[Leetcode][第977题][JAVA][有序数组的平方][排序][双指针]

【问题描述】[简单] 【解答思路】 1. 排序 平方后排序 没有使用排序的特性 时间复杂度&#xff1a;O(NlogN) 空间复杂度&#xff1a;O(1) class Solution {public int[] sortedSquares(int[] A) {int[] ans new int[A.length];for (int i 0; i < A.length; i) {ans[i] …

开始《数据机构与算法之美》之旅

文章出处&#xff1a;极客时间《数据结构和算法之美》-作者&#xff1a;王争。该系列文章是本人的学习笔记。 还在学算法&#xff0c;就像还在学英语一样悲催。想想自己为什么要学算法。学&#xff0c;是为了用。学了&#xff0c;能理解Java API提供的接口和数据结构的实现方式…

第三十七期:为什么2019年人工智能算法岗求职竞争如此激烈?

在各公司全面数据化智能化的当下&#xff0c;算法岗本该更受青睐&#xff0c;为何突然成了就业重灾区?除了暴力劝退&#xff0c;本文将从几个不同角度来分析当前算法岗的求职就业情况。 作者&#xff1a;皮皮鲁的AI星球 与前几年媒体报道的人工智能毕业生高薪难求形成鲜明对比…

第三十八期:用Git帮助写作者更好地完成工作

如果你是一名写作者&#xff0c;你也能从使用 Git 中受益。在我们的系列文章中了解有关 Git 鲜为人知的用法。 作者&#xff1a;佚名 如果你是一名写作者&#xff0c;你也能从使用 Git 中受益。在我们的系列文章中了解有关 Git 鲜为人知的用法。 Git 是一个少有的能将如此多的…

报错

报错 报错&#xff1a; 2019-05-31 11:38:42.645 WARN 18756 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class net.a…

第三十九期:1024特别版:向“程序媛们”致敬!

对女性程序员而言&#xff0c;似乎怎么选择都是错&#xff1a;闯入男性领地&#xff0c;输了&#xff0c;会强化社会对女性的固有刻板印象&#xff1b;赢了&#xff0c;打破了职业性别固化&#xff0c;会导致整个职业收入的下降。 作者&#xff1a;奇点、轻音 “到家得十二点半…

第四十期:十年生死两茫茫,Linux QQ突然复活!

就在 1024 将将过去的深夜&#xff0c;突然&#xff0c;有人在 QQ 群内丢了一个链接和一句话“Linux QQ 发布了”&#xff0c;顿时在静悄悄的 QQ 群内&#xff0c;大家纷纷冒了出来。一时间&#xff0c;群内就和开了锅一样热闹&#xff0c;大家纷纷抄起心爱的土琵琶 Linux&…