自己的做法很麻煩並且時間複雜度高,最壞o(n
2)
o(n^2)
o(n2
)原因是沒有想到去數學推導,一步一步去想很費勁,,,應該改掉這個毛病。
想到了二分的做法,但是寫麻煩了,首先統計了所有0塊所在的初始位置和個數,記為陣列a,然後遍歷所有的地方去填充0,這個時候就不能方便的從a中得到填充到哪為止,從而陷入了困境。
科學的做法,參造官方:
滑動視窗,時間複雜度o(n
)o(n)
o(n)
class solution
int res=-1;
for(int i=n-1;i>=0;i--)
printf("%d\n",res);
return res;
}};
class solution
ans=max(ans,right-left+1);
}return ans;
}};
1004 最大連續1的個數 III
題目描述 給定乙個由若干 0 和 1 組成的陣列 a,我們最多可以將 k 個值從 0 變成 1 返回僅包含 1 的最長 連續 子陣列的長度。示例 1 輸入 a 1,1,1,0,0,0,1,1,1,1,0 k 2 輸出 6 解釋 1,1,1,0,0,1,1,1,1,1,1 粗體數字從 0 翻轉到 1,...
1004 最大連續1的個數III
題目描述 給定乙個由若干 0 和 1 組成的陣列 a,我們最多可以將 k 個值從 0 變成 1 返回僅包含 1 的最長 連續 子陣列的長度。示例 1 輸入 a 1,1,1,0,0,0,1,1,1,1,0 k 2 輸出 6 解釋 1,1,1,0,0,1,1,1,1,1,1 粗體數字從 0 翻轉到 1,...
1004 最大連續1的個數 III
示例 1 輸入 a 1,1,1,0,0,0,1,1,1,1,0 k 2 輸出 6 解釋 1,1,1,0,0,1,1,1,1,1,1 粗體數字從 0 翻轉到 1,最長的子陣列長度為 6。示例 2 輸入 a 0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1 k 3 輸出 10 ...