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

做外文H网站seo主要做哪些工作

做外文H网站,seo主要做哪些工作,怎么做视频解析网站吗,电子商务网站规划与建设试题目录 力扣873. 最长的斐波那契子序列的长度 解析代码 力扣873. 最长的斐波那契子序列的长度 873. 最长的斐波那契子序列的长度 难度 中等 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#x…

目录

力扣873. 最长的斐波那契子序列的长度

解析代码


力扣873. 最长的斐波那契子序列的长度

873. 最长的斐波那契子序列的长度

难度 中等

如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的:

  • n >= 3
  • 对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}

给定一个严格递增的正整数数组形成序列 arr ,找到 arr 中最长的斐波那契式的子序列的长度。如果一个不存在,返回  0 。

(回想一下,子序列是从原序列 arr 中派生出来的,它从 arr 中删掉任意数量的元素(也可以不删),而不改变其余元素的顺序。例如, [3, 5, 8] 是 [3, 4, 5, 6, 7, 8] 的一个子序列)

示例 1:

输入: arr = [1,2,3,4,5,6,7,8]
输出: 5
解释: 最长的斐波那契式子序列为 [1,2,3,5,8] 。

示例 2:

输入: arr = [1,3,7,11,12,14,18]
输出: 3
解释: 最长的斐波那契式子序列有 [1,11,12]、[3,11,14] 以及 [7,11,18] 。

提示:

  • 3 <= arr.length <= 1000
  • 1 <= arr[i] < arr[i + 1] <= 10^9

class Solution {
public:int lenLongestFibSubseq(vector<int>& arr) {}
};

解析代码

动态规划解法思路:

状态表示:以某个位置为结尾,结合题目要求,先定义⼀个状态表示:

dp[i] 表示:以 i 位置元素为结尾的所有子序列中,最长的斐波那契子数列的长度。

        但是这里有⼀个非常致命的问题,那就是我们无法确定 i 结尾的斐波那契序列的样子。这样就会导致我们无法推导状态转移⽅方方程,因此我们定义的状态表示需要能够确定一个斐波那契序列。

        根据斐波那契数列的特性,我们仅需知道序列里面的最后两个元素,就可以确定这个序列的样子。因此,修改状态表示为:

dp[i][j] 表示:以 i 位置以及 j 位置的元素为结尾的所有的子序列中,最长的斐波那契子序列的长度。规定一下 i < j 。

状态转移方程:

设 nums[i] = b, nums[j] = c ,那么这个序列的前一个元素就是 a = c - b 。根据 a 的情况讨论:

  • a 存在,下标为 k ,并且 a < b :此时我们需要以 k 位置以及 i 位置元素为结尾的最长斐波那契子序列的长度,然后再加上 j 位置的元素(+1)即可。于是 dp[i][j] =dp[k][i] + 1 ;
  • a 存在,但是 b < a < c :此时只能有两个元素, dp[i][j] = 2 ;
  • a 不存在:此时依旧只有两个元素, dp[i][j] = 2 ;

综上,状态转移方程分情况讨论即可。

        优化点:我们发现,在状态转移方程中,我们需要确定 a 元素的下标。因此我们可以在 dp 之前,将所有的元素和下标绑定在一起,放到哈希表中。

        初始化:可以将表里面的值都初始化为 2 。

        填表顺序:先固定斐波那契子序列的最后一个数,然后枚举倒数第二个数。

        返回值:因为不知道最终结果以谁为结尾,因此返回 dp 表中的最大值 ret 。但是 ret 可能小于 3 ,小于 3 的话说明不存在。因此需要判断一下。

class Solution {
public:int lenLongestFibSubseq(vector<int>& arr) {int n = arr.size(), ret = 2;unordered_map<int, int> hash(n);for(int i = 0; i < n; ++i){hash[arr[i]] = i;}vector<vector<int>> dp(n, vector<int>(n, 2));// dp[i][j] 表示:以i位置及j位置的元素为结尾的子序列中,最长的斐波那契子序列的长度。i < j for(int j = 2; j < n; ++j) // 斐波那契子数列最后一个位置{for(int i = 1; i < j; ++i) // 斐波那契子数列倒数第二个位置{int a = arr[j] - arr[i];if(a < arr[i] && hash.count(a))dp[i][j] = dp[hash[a]][i] + 1; // hash[a]就是a元素下标ret = max(ret, dp[i][j]); }}return ret < 3 ? 0 : ret;}
};
http://www.mmbaike.com/news/102220.html

相关文章:

  • 专业网站建设品牌策划seo广告平台
  • 国外做家装的网站有哪些app推广方案
  • 网站做支付按流量付费快速建站平台
  • 常州网站设计公司最新最好的磁力搜索
  • 建立企业网站的缺点2023年8月新闻热点事件
  • 郑州直播网站建设专业做app软件开发公司
  • 龙华网站建设的软件百度收录网址
  • 福州做网站设计公司在线培训考试系统
  • 站群系统有哪些seo助理
  • 网站改版提案东莞疫情最新数据
  • 建站哪个平台好用企业关键词优化推荐
  • microsoft免费网站网店推广的重要性
  • 网站做框架免费域名注册平台有哪些
  • 以太坊网站开发seo公司怎样找客户
  • 网络科技公司网站模板最新实时大数据
  • 电子商务网站开发平台图qq刷赞网站推广
  • wordpress cms 下载免费seo软件推荐
  • 太原推广型网站开发seo站长优化工具
  • 超短网址生成优化网站推广
  • 服装业网站建设的策划百度竞价关键词价格查询
  • 南京宜电的网站谁做的公司营销策划方案
  • 购物网站 缓存友情链接推广
  • 贵州软件开发 网站开发黄山seo公司
  • 哪个网络公司做网站好百度推广优化是什么?
  • 网站改名工信部需要怎么做百度指数功能模块有哪些
  • 外贸网站制作北京seo推广
  • 芜湖做网站蚂蚁bt
  • app制作教学课程青岛seo百科
  • 企业网站的分类百度seo关键词优化方案
  • 找南昌兼职做网站的百度站长平台如何添加网站