欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

題解 | #牛妹的面試#

牛妹的面試

http://fangfengwang8.cn/practice/2818df3e10c44f859e49048875a71d34

#include <vector>
class Solution {
  public:
    /**
     * 代碼中的類名、方法名、參數(shù)名已經(jīng)指定,請勿修改,直接返回方法規(guī)定的值即可
     *
     * 返回最大山峰序列長度
     * @param numberList int整型vector 給定的序列
     * @return int整型
     */
    int mountainSequence(vector<int>& numberList) {
        // write code here
        int N = numberList.size();
        if (N < 2) {
            return N;
        }
        vector<int> up(N,
                       0); //up[j]表示以j為最大值對應的標號的上升子序列長度
        vector<int> down(N,
                         0); //down[j]表示以j為最大值對應的標號的下降子序列的長度
        for (int j = 0; j < N; j++) {
            // 搜索左邊
            if (j == 0) { //假如是第一個數(shù),那直接設(shè)為1
                up[j] = 1;
            } else { //假如前面有數(shù),那就要找到比自己小,且長度最長的那個標號
                int maxPath = 0;
                for (int i = j; i >= 0; i--) {
                    if (numberList[i] < numberList[j] &&
                            up[i] > maxPath) { //找到了比自己小且長度最長的數(shù)
                        maxPath = up[i];
                    }
                }
                up[j] += maxPath + 1;
            }
        }
        for (int j = N-1; j>=0 ; j--) {
            // 搜索右邊
            if (j == N-1) { //假如是第一個數(shù),那直接設(shè)為1
                down[j] = 1;
            } else { //假如后面有數(shù),那就要找到比自己小,且長度最長的那個標號
                int maxPath = 0;
                for (int i = j; i<N ; i++) {
                    if (numberList[i] < numberList[j] &&
                            down[i] > maxPath) { //找到了比自己小且長度最長的數(shù)
                        maxPath = down[i];
                    }
                }
                down[j] += maxPath + 1;
            }
        }

        int maxRes = 0;
        for (int j = 0; j < N; j++) {
            for (int k = j; k < N; k++) {
                int temp = up[j] + down[k];
                if (numberList[k] == numberList[j]) { //倆數(shù)相等,需要減一
                    temp--;
                }
                if (temp > maxRes) {
                    maxRes = temp;
                }
            }
        }
        return maxRes;
    }
};

動態(tài)規(guī)劃,up[j]表示以j為最大值對應的標號的上升子序列長度,down[j]表示以j為最大值對應的標號的下降子序列的長度

核心思想:以最大上升子序列為例,up[j]為 “數(shù)組值比自己小且長度最長的那個i”對應的up[i] 再+1

全部評論

相關(guān)推薦

04-06 11:24
已編輯
太原學院 C++
點贊 評論 收藏
分享
評論
點贊
收藏
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)