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

东莞网站优化手机网站建设 小程序

东莞网站优化,手机网站建设 小程序,做网站都需要什么步骤,关于做ppt的网站有哪些300. 最长递增子序列 1.dp定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.递推公式:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1); 注意这里不是要dp[i] 与 dp[j] 1进行比较,而是我们要取dp[j] 1的最大值…

300. 最长递增子序列

1.dp定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度

2.递推公式:if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);

注意这里不是要dp[i] 与 dp[j] + 1进行比较,而是我们要取dp[j] + 1的最大值

 3.初始化:每一个i,对应的dp[i](即最长递增子序列)起始大小至少都是1.

class Solution {
public:int lengthOfLIS(vector<int>& nums) {if (nums.size() <= 1) return nums.size();vector<int> dp(nums.size(), 1);int result = 0;for (int i = 1; i < nums.size(); i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);}if (dp[i] > result) result = dp[i]; // 取长的子序列}return result;}
};

674. 最长连续递增序列

1.dp定义:dp[i]:以下标i为结尾的连续递增的子序列长度为dp[i]

2.递推公式:如果 nums[i] > nums[i - 1],那么以 i 为结尾的连续递增的子序列长度 一定等于 以i - 1为结尾的连续递增的子序列长度 + 1 。

即:dp[i] = dp[i - 1] + 1;

因为本题要求连续递增子序列,所以就只要比较nums[i]与nums[i - 1],而不用去比较nums[j]与nums[i] (j是在0到i之间遍历)。

 3.dp[i]应该初始1;        

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {if (nums.size() == 0) return 0;int result = 1;vector<int> dp(nums.size() ,1);for (int i = 1; i < nums.size(); i++) {if (nums[i] > nums[i - 1]) { // 连续记录dp[i] = dp[i - 1] + 1;}if (dp[i] > result) result = dp[i];}return result;}
};

718. 最长重复子数组

1.dp定义:以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。

2.递推公式:当A[i - 1] 和B[j - 1]相等的时候,dp[i][j] = dp[i - 1][j - 1] + 1;

根据递推公式可以看出,遍历i 和 j 要从1开始!

3.初始化:根据dp[i][j]的定义,dp[i][0] 和dp[0][j]其实都是没有意义的!

但dp[i][0] 和dp[0][j]要初始值,因为 为了方便递归公式dp[i][j] = dp[i - 1][j - 1] + 1;

所以dp[i][0] 和dp[0][j]初始化为0。

举个例子A[0]如果和B[0]相同的话,dp[1][1] = dp[0][0] + 1,只有dp[0][0]初始为0,正好符合递推公式逐步累加起来。

注:如果dp数组以i,j为结尾,那么初始化时,应该为dp[i] = dp[j]时初始化为1

class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {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;}if (dp[i][j] > result) result = dp[i][j];}}return result;}
};

1143. 最长公共子序列

和上一题的区别是不要求是连续的了,但要有相对顺序

1.dp含义:dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]

2.递推公式:如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = dp[i - 1][j - 1] + 1;

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。

即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() + 1, vector<int>(text2.size() + 1, 0));for (int i = 1; i <= text1.size(); i++) {for (int j = 1; j <= text2.size(); j++) {if (text1[i - 1] == text2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[text1.size()][text2.size()];}
};

http://www.yayakq.cn/news/106089/

相关文章:

  • 辛集建设网站阿迪达斯网站建设的总体目标
  • 做天猫网站设计难吗网上卖货平台有哪些
  • jquery 显示 wordpress单页面网站怎么优化
  • 安顺网站开发网站开发用的框架前端
  • 横沥做网站北京工程建设有限公司
  • 营销网站的优势是什么seo关键词布局
  • 网站快速备案网站备案 申请
  • 网站反链如何做门户网站如何制作
  • 手机百度收录网站吗织梦做网站利于优化
  • 单页面淘宝客网站建设部网站官网挂证通报
  • 网站建设与推广的实训报告手机建设网站
  • 做海报的网站什么编辑器网站建设好后打开是目录文件
  • 玩具网站建设策划书局域网网站建设多少钱
  • 博览局网站建设中国建筑装饰网家居频道
  • 外贸怎么用网站开发新客户nginx wordpress 固定链接 404
  • 网站开发设计过程国外网站排行榜
  • 网站seo新闻ui设计培训班的学费一般是多少钱?
  • 太原网站建设哪家最好网页设计公司简约
  • 深圳网站建设在哪里可以利用店铺网站做灰色优化
  • 电子商务网站建设网重庆软件外包公司
  • 网站设计有创意的主题网站建设怎么开发客户
  • 装修公司网站wordpress 模板免费建站软件排行榜
  • 南京华夏商务网做网站怎么样上海知名的seo推广咨询
  • 做的怎样 英文网站旅游网站名称设计
  • 玉溪网站设计彩库宝典官方app版下载
  • 南京做网站优化的企业wordpress主题结构图
  • 婚介网站开发wordpress管理导航栏目
  • 电子商务网站建设与维护读书心得专业做网站建设公司怎么样
  • 医疗网站前置审批要多长时间设计教程网站有哪些
  • 上海工业网站建设网站建设与网页设计课程