日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP)

發布時間:2024/7/5 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

https://tianchi.aliyun.com/oj/118289365933779217/122647324212270018
描述:

給你一個長度為 n 的序列,在他的子序列中讓你找一個山谷序列,山谷序列定義為:

  • 序列的長度為偶數。
  • 假設子序列的長度為 2n 。則前 n 個數是嚴格遞減的,后 n 個數是嚴格遞增的,并且第一段的最后一個元素和第二段的第一個元素相同,也是這段序列中的最小值。

現在想讓你找所有子序列中滿足山谷序列規則的最長的長度為多少?

示例 樣例 1:輸入: num = [5,4,3,2,1,2,3,4,5]輸出: 8樣例解釋: 最長山谷序列為[5,4,3,2,2,3,4,5]樣例 2:輸入: num = [1,2,3,4,5]輸出: 0樣例解釋: 不存在山谷序列

2. 解題

class Solution { public:/*** @param num: sequence* @return: The longest valley sequence*/int valley(vector<int> &num) {// write your code hereint n = num.size();if(n <= 1) return 0;vector<int> up(n, 1), down(n, 1);//最長遞增/遞減數組for(int i = 1, j; i < n; i++) //正序{for(j = 0; j < i; j++){if(num[j] > num[i])//前面的比當前大,遞減down[i] = max(down[i], down[j] + 1);}}for(int i = n-2, j; i >= 0; i--) //逆序遍歷{for(j = i+1; j < n; j++){if(num[j] > num[i])//后面的比當前大,遞增up[i] = max(up[i], up[j] + 1);}}int maxlen = 0;for(int i = 0, j; i < n; i++){for(j = i+1; j < n; j++){if(num[i] == num[j])//最小的數{maxlen = max(maxlen, min(down[i],up[j])*2);} // 兩側等長的遞減 遞增}}return maxlen;} };

時間復雜度 O(n2)O(n^2)O(n2)


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的天池在线编程 2020国庆八天乐 - 6. 山谷序列(DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。