扫描 * 2 数组
764. 最大加号标志
int ans = 1;
for(int i = 1; i < n; i++) {
for(int j = 1; j < n; j++) {
if(arr[i][j] == 1) {
int count = 1;
int left = i - 1;
int right = i + 1;
int up = j - 1;
int down = j + 1;
while(left >= 0 && up >= 0 && right < n && down < n && arr[left][j] == 1 && arr[right][j] == 1 && arr[i][up] == 1 && arr[i][down] == 1) {while很关键
count++;就一直走
left -= 1;
right += 1;
up -= 1;
down += 1;
}
ans = Math.max(ans, count);
}
}
}
999. 可以被一步捕获的棋子数
int[][] dirs = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
for(int i = 0; i < 8; i++) {
for(int j = 0; j < 8; j++) {
if(board[i][j] == 'R') {//only one 象
int ans = 0;
for(int k = 0; k < 4; k++) {
int x = i, y = j;
while(true) {一直走
x += dirs[k][0];
y += dirs[k][1];
if(x < 0 || x >= 8 || y < 0 || y >= 8 || board[x][y] == 'B') {
break;
}
if(board[x][y] == 'p') {
ans++;
break;
}
}
}
return ans;
}
}
}
985. 查询后的偶数和
for(int i = 0; i < c; i++) {
int val = queries[i][0], index = queries[i][1];
if(nums[index] % 2 == 0) {如果涉及到曾经得偶数,则需要考虑其现在是奇数还是偶数
sum -= nums[index];
}
nums[index] += val;
if(nums[index] % 2 == 0) {现在还是偶数,在加回去
sum += nums[index];
}
ans[i] = sum;
}
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号