C++ 错误:可变大小的对象可能未初始化编译时有时会出现此问题如何修复? 类解决方案{ 公众: int最大利润(矢量和价格){ //这里如何修复编译错误,即n是可变大小,不能用于 //初始化以及为什么在某些问题上也会发生这种情况;。 int n=prices.size(); 如果(n=0;i--){ 如果(价格[i]>maxi){ maxi=价格[i]; 右[i]=右[i+1]; } 否则{ 右[i]=max(右[i-1],最大价格[i]); } } int res=0; 对于(int i=0;i

C++ 错误:可变大小的对象可能未初始化编译时有时会出现此问题如何修复? 类解决方案{ 公众: int最大利润(矢量和价格){ //这里如何修复编译错误,即n是可变大小,不能用于 //初始化以及为什么在某些问题上也会发生这种情况;。 int n=prices.size(); 如果(n=0;i--){ 如果(价格[i]>maxi){ maxi=价格[i]; 右[i]=右[i+1]; } 否则{ 右[i]=max(右[i-1],最大价格[i]); } } int res=0; 对于(int i=0;i,c++,C++,From(8):noptr声明符[constexpr(可选)]attr(可选)(8)数组大小是一个常量表达式 差不多大小 整型常量表达式(直到C++14) std::size_t类型的转换常量表达式(自C++14以来), 其计算值大于零 不能对此使用运行时变量,但prices.size()是一个运行时变量 使用编译时常数大小、 STD::vector < /C>或动态内存分配。< /P>使用STD::向量用于可变大小的数组。C++没有真正的,比如你尝试为左> /COD>和右< /代码>。这能回答

From(8):
noptr声明符[constexpr(可选)]attr(可选)(8)
数组大小是一个常量表达式

差不多大小

整型常量表达式(直到C++14) std::size_t类型的转换常量表达式(自C++14以来), 其计算值大于零

不能对此使用运行时变量,但
prices.size()
是一个运行时变量


使用编译时常数大小、<代码> STD::vector < /C>或动态内存分配。< /P>使用STD::向量用于可变大小的数组。C++没有真正的,比如你尝试为<代码>左> /COD>和<代码>右< /代码>。这能回答你的问题吗?

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //Here how to fix the compilation error which says n is variable size and cant be used for 
        //initialisation  and why does this happen that too in only some Problems;.
         int n=prices.size();
        if(n<=1)
            return 0;
        
        int left[n]={0};
        int mini = prices[0];
        
        for(int i=1;i<n;i++){
           if(prices[i]>mini){
               left[i] = max(left[i-1], prices[i]-mini);
           } 
            else{
                mini=prices[i];
                left[i]=left[i-1];
            }
        }
        int right[n]={0};
        int maxi=prices[n-1];
        
        for(int i=n-2;i>=0;i--){
            if(prices[i]>maxi){
                maxi=prices[i];
                right[i]=right[i+1];
            }
            else{
                right[i] = max(right[i-1], maxi-price[i]);
            }
        }
        int res=0;
        
        for(int i=0;i<n;i++){
            res=max(res, left[i]+right[i]);
        }
        
        return res;
    }
};