只需要获得当前位置的上下左右棋子的值取反就行了
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A int整型vector<vector<>>
* @param f int整型vector<vector<>>
* @return int整型vector<vector<>>
*/
vector<vector<int> > flipChess(vector<vector<int> >& A,
vector<vector<int> >& f) {
// write code here
for (const auto& pos : f) {
if (pos[1] - 2 >= 0) {
A[pos[0] - 1][pos[1] - 2] = !A[pos[0] - 1][pos[1] - 2]; // left
}
if (pos[1] < A[0].size()) {
A[pos[0] - 1][pos[1]] = ! A[pos[0] - 1][pos[1]]; // right
}
if ((pos[0] - 2) >= 0)
A[pos[0] - 2][pos[1] - 1] = !A[pos[0] - 2][pos[1] - 1]; // up
if (pos[0] < A[0].size())
A[pos[0]][pos[1] - 1] = !A[pos[0]][pos[1] - 1]; // down
}
return A;
}
};