start=i,end=j有什么区别;和开始=i;结束=j;

问题是“最大连续系列 1”

您将获得一个由 1 和 0 组成的数组。你得到一个整数 M,它表示允许的翻转次数。

找到翻转时将产生最大连续系列 1 的零位置。

我使用滑动窗口方法来解决答案,但是我注意到如果我start=i;end=j;写错了,但是start=i,end=j;是对的。

它们的执行有什么区别?

vector<int> Solution::maxone(vector<int> &A, int B) {
    int n=A.size();
    int start=0,end=0,count=0,i,j;
    
    for(i=0,j=0;j<n;){
        if(B>=0 && !A[j++])
       
        B--;
        
        if(B<0 && !A[i++])
        
        B++;
        
        if(end-start<j-i)
        start=i,end=j;    // Here I get wrong ans if I write start=i;end=j;
    }
    
    vector<int> v;
    while(start<end)
    v.push_back(start++);
    
    return v;
    
}

回答

如果start=i;end=j;你得到

if(end-start<j-i)
  start=i;
end = j;

因为;再做end=j;一个声明

start=i,end=j;是一个语句,因为逗号是逗号运算符

解决方法:使用 if() {}


以上是start=i,end=j有什么区别;和开始=i;结束=j;的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>