当前位置: 首页 > news >正文

网站建设与管理技术发展合肥建设银行网站首页

网站建设与管理技术发展,合肥建设银行网站首页,最近发生的重大新闻,wordpress版面混乱题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素) 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i] 表示以nums[i…

题目1  300 最长递增子序列

题目链接 300 最长递增子序列

题意

找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素)

动态规划

动规五部曲

1)dp数组及下标i的含义

dp[i] 表示以nums[i]为结尾的最长递增子序列的长度

2)dp数组初始化

根据定义 长度至少是1  dp[i] = 1

3)递推公式

j从0到i-1各个位置的最长升序子序列 + 1 的最大值 

要计算每个当前值dp[i]与现在遍历的nums[j]的长度的大小关系 每一个值都要进行比较

if(nums[i] > nums[j]) dp[i] = max(dp[j]+1,dp[i])

4)遍历顺序

根据递推公式 当前长度依赖于之前的结果  i从小到大遍历 j的遍历顺序无所谓,只要把i-1的范围内的值遍历完就ok

for(i=1;i<nums.size(); i++){

     for(j=0;j<i;j++){

      }

}

5)打印dp数组

代码

class Solution {
public:int lengthOfLIS(vector<int>& nums) {//定义dp数组  初始化vector<int> dp(nums.size(), 1);int result = 0;for(int i = 0; i < nums.size(); i++){for(int j = 0; j < i; j++){if(nums[i] > nums[j]) dp[i] = max(dp[j] + 1, dp[i]);}result = max(result, dp[i]);}return result;}
};
  • 时间复杂度: O(n^2)
  • 空间复杂度: O(n)

题目2   674 最长连续递增子序列

题目链接  674 最长连续递增序列

题意

找到未排序的整数数组的最长且连续递增的子序列的长度(不能删减元素了)

动态规划

动规五部曲

1)dp数组及下标i的含义

dp[i] 表示以nums[i]为结尾的最长连续递增子序列的长度

2)dp数组初始化

至少包含1个元素  dp[i] = 1

3)递推公式

只比较nums[i]与nums[i-1]即可,这样才可以保证是连续 

不用去比较nums[j]与nums[i] (j是在0到i之间遍历)

if(nums[i] > nums[i-1]) dp[i] = dp[i-1] + 1

4)遍历顺序

根据递推公式 dp[i]依赖于dp[i-1]  从前往后推导

5)打印dp数组

代码

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {//定义dp数组 初始化vector<int> dp(nums.size(), 1);int result = 1;  //对于只有1个元素的数组for(int i = 1; i < nums.size(); i++){if(nums[i] > nums[i-1]) dp[i] = dp[i-1] + 1;result = max(result, dp[i]);}return result;}
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

题目3  718 最长重复子数组

题目链接  718 最长重复子数组

题意

返回两个整数数组nums1和nums2的公共的最长子数组的长度

动态规划

动规五部曲

1)dp数组及下标i的含义

想到使用二维dp数组可以记录两个字符串的所有比较情况

dp[i][j] 表示以nums1[i-1]结尾的数组和以nums2[j-1]结尾的数组的公共最长子数组的长度

2)dp数组初始化

根据递推公式 初始化第一行第一列

根据dp数组定义 dp[i][0] 与 dp[0][j] 没有意义

根据递推公式 是在上一个基础上加1 应该从0开始往上加 dp[i-1][0] = 0  dp[0][j-1] = 0  其他下标可初始为任意值

3)递推公式

根据dp数组的定义 dp[i][j]以nums1[i-1]结尾 nums2[j-1]结尾  所以比较nums1[i-1]与nums2[j-1]

if(nums1[i-1] == nums2[j-1]) dp[i][j] = dp[i-1][j-1] + 1

4)遍历顺序

遍历2个数组的顺序谁先谁后均可 只要把两个数组遍历完即可

之所以有等号,根据dp数组的定义 dp[i][j]以nums1[i-1]结尾 nums2[j-1]结尾

等号代表 nums1[nums1.size()-1]   nums2[nums2.size()-1]

for(i=1;i<=nums1.size();i++){

   for(j=1;j<=nums2.size();j++){

   }

}

5)打印dp数组

代码

class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {//定义dp数组  初始化dp数组vector<vector<int>> dp(nums1.size() + 1, vector<int>(nums2.size() + 1, 0));int result = 0;for(int i = 1; i <= nums1.size(); i++){for(int j = 1; j <= nums2.size(); j++){if(nums1[i-1] == nums2[j-1]){dp[i][j] = dp[i-1][j-1] + 1;}result = max(result, dp[i][j]);}}return result;}
};
  • 时间复杂度:O(n × m),n 为nums1长度,m为nums2长度
  • 空间复杂度:O(n × m)
http://www.yayakq.cn/news/628206/

相关文章:

  • 有哪些网站可以做设计竞标微信二维码生成器
  • 德阳网站开发企业网站建设一般多少钱
  • 公司做网站的步骤2021中国十大软件公司排名
  • 宁安市建设局网站衡水提供网站制作公司电话
  • 北京软件网站开发企业管理官网登录入口
  • 一般一个网站从建设到运营要多久python基础教程答案
  • 汉阳区建设局网站电脑上如何做网站
  • 朱晓宇 大庆 seo 网站建设 北京wordpress替换谷歌字体
  • 建设企业网站前市场分析c 网站开发例子
  • 广州家具网站建设公共资源交易中心级别
  • 做盗版电影网站教程工程建设监理名词解释
  • 网站做支付宝接口吗浙江省建设信息港成绩查询
  • 上海网站制作比较好的公司兰州h5设计
  • 建设商城网站公司百度百科wordpress获取文章列表
  • 有没有做catalog的网站如何制作个人网页页
  • 三 网站开发使用软件环境免费手机虚拟机
  • 深圳网站制作必选祥奔科技专业杭州网站建设
  • 建设企业品牌网站官网站超链接怎么做
  • 学网站建设需要多长时间网站建设每年需要交多少钱
  • 平面设计师参考网站黑龙江省建设官方网站
  • 龙华网站设计公司万户网络是干嘛的
  • 网站建设目标概括小企业网站推广
  • 2022腾讯云网站建设方案书白云区做网站
  • 管理学精品课程网站0基础建站网站搭建教程
  • 铁路建设单位网站wordpress 自定义表
  • 昆明网站优化建设赣州互联网哪家好
  • 做算法题的网站网站建设沟通话术
  • 网站开发后台能用c语言吗中国人做外贸网站都卖什么手续
  • 商城微网站建设多少钱中国百强县市榜单
  • 四川建设行业网站有哪些电子商务网站开发的意义