| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 力扣每日一题(五十九——(线性)动态规划) -> 正文阅读 |
|
[数据结构与算法]力扣每日一题(五十九——(线性)动态规划) |
仅以此纪录LeetCode所刷题目。 题目描述: 示例: 思路: 本题使用动态规划的方法去求解,我们首先建立一个dp数组,之后进行双层的for循环,dp数组中存储的是在当前位置下最长的递增子序列的长度,之后我们返回dp数组的最大值即可。 代码:
?题目描述: 示例: 思路: 这道题时最长子序列的复杂版,我们仍然是使用动态规划的方法,唯一不同的是我们需要再次定义一个数组里面装的是最长子序列的个数。如下的代码上会有提到。 代码:
题目描述: 示例: 思路: 这道题的思路和之前做的一个长方形嵌套是比较像的,只是这题比较严格,只有信封的宽度和高度都大的时候才能装得下。首先我们进行排序,我们首先按照envelops[0]升序,再按照envelops[1]降序,之后我们遍历envelopes数组是只需要判断envelops[1]即可,因为我们已经按照按照envelops[1]降序排列,因此如果遇到更大的envelops[1]那么就只有可能是envelops[0]已经改变,这样的情况表示可以装下信封,如果遇到比较小的envelops[1],我们是用二分法将其插入即可,最后返回数组的长度即为答案。 代码:
题目描述: 示例:? 思路: 这道题属于比较经典的动态规划问题,我们只需要在原数组上进行操作即可。遍历数组,判断nums[i-1] + nums[i] 和 nums[i] 的大小关系,如果我们发现 nums[i-1] + nums[i] > nums[i],那么nums[i] =?nums[i-1] + nums[i] ,反之不进行任何操作直接继续进行遍历。 代码:
题目描述: 示例: 思路: 这道题我们首先要知道一点,最小的数*负数?可能会变成 最大的数,最大的数*负数?可能会变成 最小的数,因此本题我们不仅要存储当前乘积最大的数,还要存储当前乘积最小的数。在遍历的时候每次都要更新这两个数,同时也要更新我们将要返回的结果(最大值)。 代码:?
题目描述: 示例: 思路: 本题有一个巧妙地算法,读题之后我们应该直到如果出现最大连续子数字会出现两种情况,一种是该子数组出现在数组里面,另外一种情况是该数组结尾+该数组开头为最大子数组,因此如果是第一种情况,我们之前的题目中提到过,如果是第二种情况,那么我们可以用整个数组的和-最小子数组。(要特殊讨论数组元素全为负数的情况) 代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:26:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |