题目描述
题意解析
读完题之后,其实问题就可以化简为,在数组中求出-1和1之间最多有多少个0
思路分析
注意-1和1之间没有顺序,哪个在前面都可以。当前元素为1或者-1时,进入第二层遍历计算0的数量。当再次遇到-1或者1时,若符号和前面的相反则尝试更新答案,若符号相同则不更新。
代码
class Solution {
public int captureForts(int[] forts) {
int ans = 0, x = 0, cnt = 0;
int n = forts.length;
for(int i = 0; i < n; i++) {
x = forts[i];
if(x == 1 || x == -1) {
cnt = 0;
for(int j = i + 1; j < n; j ++) {
if(forts[j] == 0) cnt ++;
else if(forts[j] == -x) {
ans = Math.max(ans, cnt);
i = j - 1; // 因为for循环中i++,所以这里将i设置为 j - 1
break;
}
else if(forts[j] == x) {
i = j - 1;
break;
}
}
}
}
return ans;
}
}