首页 > 解决方案 > start=i,end=j; 有什么区别?和开始=我;结束=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;
    
}

标签: c++arrayssliding-window

解决方案


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

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

因为另;end=j;声明

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

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


推荐阅读