为什么vector定义dp就成功了,改成传统数组就不行了?

leedcode里的978. 最长湍流子数组,为什么vector定义dp就成功了,改成传统数组就不行了。 

 

再附上代码

class Solution {

public:

    int maxTurbulenceSize(vector<int>& arr) {

        int len=arr.size();

        //vector<vector<int>> dp(len, vector<int>(2, 1));    //可以

        int dp[40001][2]={1};                               //不可以

        dp[0][0]=dp[0][1]=1;

        for(int i=1;i<len;i++){

            if(arr[i-1]>arr[i])dp[i][0]=dp[i-1][1]+1;

            else if(arr[i-1]<arr[i]){

                dp[i][1]=dp[i-1][0]+1;

            }

        }

 

        int ins=1;

        for(int i=0;i<len;i++){

            ins=max(ins,dp[i][0]);

            ins=max(ins,dp[i][1]);

        }

        return ins;

    }

};