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() {}