前言:这个题目可以用状态dp来做,其实还有一个思路,类似滑动窗口,如果有遇到第二个0,左指针加一
class Solution {
public:
int longestSubarray(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> dp(n + 2, vector<int>(2));
for (int i = 0; i < n; i++) {
if (nums[i]) {
dp[i + 1][0] = dp[i][0] + 1;
dp[i + 1][1] = dp[i][1] + 1;
}
else {
dp[i + 1][1] = dp[i][0];
}
}
return dp[n][1];
}
};