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

南通专业网站制作公司史上最强大的搜索神器

南通专业网站制作公司,史上最强大的搜索神器,福州仓山区网站建设,外贸网络推广营销300.最长递增子序列 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展示 //300.最长递增子序列 int lengthOfLIS(vector<int>& nums) {if (nums.size() 1) {return 1;}//step1 构建dp数组//dp[i]的含义是长度未nums数组中长度为i 1的数组的最长子序列长…

300.最长递增子序列

题目链接/文章讲解/视频讲解:代码随想录

1.代码展示

//300.最长递增子序列
int lengthOfLIS(vector<int>& nums) {if (nums.size() == 1) {return 1;}//step1 构建dp数组//dp[i]的含义是长度未nums数组中长度为i + 1的数组的最长子序列长度vector<int> dp(nums.size(), 1);//step2 状态转移方程//将第i + 1个数和前面的i个数一一对比,找到最大的dp[i]//if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);//step3 初始化//step4 开始遍历int nResult = 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);}}nResult = max(nResult, dp[i]);}return nResult;
}

 2.本体小节

        思考:明确本题dp数组含义,dp[i]指的是到下标为i的数组中最长递增子序列个数;遍历nums数组,再对下标i前的所有数字进行遍历,通过比较nums[i]和nums[j]的大小,来更新最大dp[i],即dp[i] = max(dp[i], dp[j] + 1);i下次遍历之前,更新result即可,最终取出最大的dp[i]作为结果;注意初始化时每个元素都为1,因为元素本身递增子序列就为1。

        基本思路:如上,注意初始化和状态转移方程。

674. 最长连续递增序列

题目链接/文章讲解/视频讲解:代码随想录

1.代码展示

//674.连续最长递增子序列
int findLengthOfLCIS(vector<int>& nums) {if (nums.size() == 1) {return 1;}vector<int> dp(nums.size(), 1);int nResult = 0;for (int i = 1; i < nums.size(); i++) {if (nums[i] > nums[i - 1]) {dp[i] = dp[i - 1] + 1;}nResult = max(nResult, dp[i]);}return nResult;
}

 2.本题小节

        思考:本题和上一题最大的不同在于,遍历时,当前值只需要和前一个值进行比较即可,不需要对当前值之前的所有值进行遍历;因此dp[i]只与dp[i - 1]有关,如果nums[i] > nums[i - 1],那么dp[i] = dp[i - 1] + 1,并更新result,获得最大的dp[i];初始化时dp均为1。

       基本思路:如上,注意初始化和状态转移方程。

718. 最长重复子数组  

 题目链接/文章讲解/视频讲解:代码随想录

1.代码展示

//718.最长重复子数组
int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>> dp(nums1.size() + 1, vector<int>(nums2.size() + 1, 0));int nResult = 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;nResult = max(nResult, dp[i][j]);}}}return nResult;
}

2.本题小节

        思考:本题和上面两题不同的是本题要比较的是两个数组的最长重复子数组。构建dp数组,dp[i][j]含义是以下标为 i - 1 和 j - 1 为结尾的数组A和B的最长重复子序列,初始化时数组全部初始化为0,这里dp[i][j]的含义就体现了出来,不需要对dp[0][j]和dp[i][0]一个一个初始化。首先对nums1开始遍历,再对nums2遍历,都从1开始,当nums1[i - 1] == nums2[j - 1]时,此时触发状态转移方程,dp[i][j]  = dp[i - 1][j - 1] + 1,并更新result。

        基本思路:注意本题使用的是二维数组,并把每种情况都列举了出来。

http://www.15wanjia.com/news/52780.html

相关文章:

  • 怎么建设国际网站首页nba最新排名榜
  • 计算机网站开发毕业论文培训心得模板
  • 优秀企业网站制作网站推广途径和推广要点
  • 广州创建网站什么是搜索关键词
  • 网站推广优化外包公司哪家好百度seo网站优化服务
  • 云典wordpressseo黑帽是什么
  • 网站默认模板怎么推广网站
  • 网络公司 给 客户网站备案sem和seo
  • 网站开发公司建网站兰州网络推广优化怎样
  • 张家港网站制作服务新闻式软文经典案例
  • 摄影师个人网站怎么做seo下拉优化
  • wordpress标签集合济南seo优化公司助力排名
  • 建设网站需要准备什么手续制作网页用什么软件
  • 什么颜色做网站显的大气线上销售平台都有哪些
  • bs网站开发seo外包公司需要什么
  • 青海做网站哪家好谷歌seo优化怎么做
  • 网络工程适合女生吗怎么做seo
  • 一个网站大概多少页面怎么宣传网站
  • 如何制作网站视频的软件深圳seo外包
  • 深圳产品型网站建设买卖网交易平台
  • 电脑网址打不开网页怎么办百度快照优化公司
  • 部门网站建设管理经验交流材料长沙在线网站的目标客户
  • 广东网站建设微信商城运营建站平台哪个好
  • 宇泽佛山网站建设站长平台官网
  • 网上兼职做效果图网站站长之家 站长工具
  • 高端网站服务范围镇江百度seo
  • 毕业设计做视频网站设计哪家公司网站做得好
  • 集团网站建设定制网站建设自己个人怎样做电商
  • 怎么看网站是不是做竞价seo工具不包括
  • 软件开发培训一般要多少钱保定百度首页优化