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

专业集团门户网站建设个人接外包项目平台

专业集团门户网站建设,个人接外包项目平台,苏州网站推广公司,如何做网站seo排名优化413. 等差数列划分 链接: 413. 等差数列划分 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回…

413. 等差数列划分

链接: 413. 等差数列划分

如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。

例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。
给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。

子数组 是数组中的一个连续序列。

示例 1:

输入:nums = [1,2,3,4]
输出:3
解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。
示例 2:

输入:nums = [1]
输出:0

1.状态表示*
dp[i] 表⽰必须「以 i 位置的元素为结尾」的等差数列有多少种

2.状态转移方程
对于 dp[i] 位置的元素 nums[i] ,会与前⾯的两个元素有下⾯两种情况:

  1. i. nums[i - 2], nums[i - 1], nums[i] 三个元素不能构成等差数列:那么以 nums[i]为结尾的等差数列就不存在此时 dp[i] = 0
  2. ii. nums[i - 2], nums[i - 1], nums[i] 三个元素可以构成等差数列:那么以 nums[i - 1] 为结尾的所有等差数列后⾯填上⼀个 nums[i] 也是⼀个等差数列,此时 dp[i] = dp[i - 1] 。但是,因为 nums[i- 2], nums[i - 1], nums[i] 三 者⼜能构成⼀个新的等差数列,因此要在之前的基础上再添上⼀个等差数列,于是 dp[i] = dp[i - 1] + 1

3. 初始化

由于需要⽤到前两个位置的元素,但是前两个位置的元素⼜⽆法构成等差数列,因此 dp[0] =dp[1] = 0 。

4. 填表顺序
根据「状态转移⽅程」易得,填表顺序为「从左往右」

5. 返回值
因为我们要的是所有的等差数列的个数,因此需要返回整个 dp 表⾥⾯的元素之和。

代码:

int numberOfArithmeticSlices(vector<int>& nums) {int n=nums.size();vector<int> dp(n);int sum=0;for(int i=2;i<n;i++){if(nums[i]-nums[i-1]==nums[i-1]-nums[i-2]){dp[i]=dp[i-1]+1;sum+=dp[i];}}return sum;}

在这里插入图片描述

978. 最长湍流子数组

链接: 978. 最长湍流子数组

给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。

如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。

更正式地来说,当 arr 的子数组 A[i], A[i+1], …, A[j] 满足仅满足下列条件时,我们称其为湍流子数组:

若 i <= k < j :
当 k 为奇数时, A[k] > A[k+1],且
当 k 为偶数时,A[k] < A[k+1];
或 若 i <= k < j :
当 k 为偶数时,A[k] > A[k+1] ,且
当 k 为奇数时, A[k] < A[k+1]。

示例 1:

输入:arr = [9,4,2,10,7,8,8,1,9]
输出:5
解释:arr[1] > arr[2] < arr[3] > arr[4] < arr[5]
示例 2:

输入:arr = [4,8,12,16]
输出:2
示例 3:

输入:arr = [100]
输出:1

1.状态表示*
需要两个 dp 表:

  1. f[i] 表⽰:以 i 位置元素为结尾的所有⼦数组中,最后呈现「上升状态」下的最⻓湍流数组的⻓度;
  2. g[i] 表⽰:以 i 位置元素为结尾的所有⼦数组中,最后呈现「下降状态」下的最⻓湍流数组的⻓度

2.状态转移方程
对于 i 位置的元素 arr[i] ,有下⾯两种情况:

  1. i. arr[i] > arr[i - 1] :如果 i 位置的元素⽐ i - 1 位置的元素⼤,说明接下来 应该去找 i -1 位置结尾,并且 i - 1 位置元素⽐前⼀个元素⼩的序列,那就是 g[i- 1] 。更新 f[i] 位置的值: f[i] = g[i - 1] + 1 ;

  2. ii. arr[i] < arr[i - 1] :如果 i 位置的元素⽐ i - 1 位置的元素⼩,说明接下来 应该去找 i - 1位置结尾,并且 i - 1 位置元素⽐前⼀个元素⼤的序列,那就是 f[i - 1] 。更新 g[i] 位置的值: g[i] = f[i- 1] + 1 ;

  3. ii. arr[i] == arr[i - 1] :不构成湍流数组。

3. 初始化
所有的元素「单独」都能构成⼀个湍流数组,因此可以将 dp 表内所有元素初始化为 1 。 由于⽤到前⾯的状态,因此我们循环的时候从第⼆个位置开始即可

4. 填表顺序
根「从左往右,两个表⼀起填」

5. 返回值
应该返回「两个 dp 表⾥⾯的最⼤值」

代码:

int maxTurbulenceSize(vector<int>& arr) {int n=arr.size();vector<int> f(n,1),g(n,1);int len=1;for(int i=1;i<n;i++){if(arr[i]>arr[i-1]){f[i]=g[i-1]+1;}if(arr[i]<arr[i-1]){g[i]=f[i-1]+1;}len=max(len,max(f[i],g[i]));}return len;}

在这里插入图片描述

http://www.dinnco.com/news/35072.html

相关文章:

  • 白山网站建设网站推广的基本方法
  • 企业cms建站系统成都有实力的seo团队
  • wordpress主题导入百度禁止seo推广
  • 产品销售型企业网站有哪些百度推广开户价格
  • 网购网站有哪些大数据精准营销系统
  • 小程序开发制作官网微信seo
  • 英文网站建设维护百度一下你就知道移动官网
  • 深圳网站制作公司机构河南网站推广公司
  • 台州网站建设团队南宁seo外包要求
  • 国外空间设计网站产品推广计划书怎么写
  • 系统之家网站怎么做的百度高级检索入口
  • 一级a做爰片免费观看网站全网推广代理
  • wordpress 淘宝客 采集seo基础优化包括哪些内容
  • 网站模板减肥360优化大师下载
  • 打码网站做的比较好的是哪些官网首页入口百度
  • 毕业设计可以做哪些简单网站廊坊百度seo公司
  • 青岛网景互联网站建设公司自助建站平台源码
  • 南阳优化网站排名三只松鼠有趣的软文
  • 企业做网站的意义高级搜索指令
  • 深圳CSS3网站建设价格西地那非片能延时多久每次吃多少
  • 网站使用费用购买域名的网站
  • 网站 内容微博seo营销
  • 怎么看网站是否被k过自己的app如何接广告
  • 南阳做网站 汉狮公司免费个人推广引流平台
  • 专业做网站的公司有哪些百度快照下载
  • 成都h5模板建站中国疫情今天最新消息
  • 适合这手机浏览器主页的网站谷歌下载官方正版
  • wordpress设置上传文件大小限制无锡网站seo顾问
  • 宝安营销型网站设计厦门关键词优化seo
  • 安卓软件开发需要学什么如何优化推广网站