class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
for(int i = 0; i < A.size(); i++){
std::reverse(A[i].begin(), A[i].end());
for(int j = 0; j < A[i].size(); i++ ){
if(A[i][j] == 0){
A[i][j] = 1;
}
else{
A[i][j] = 0;
}
}
}
return A;
}
};
这是针对LeetCode问题832的。我似乎找不到我的代码有什么问题。我将每个整数矢量的内容取反,然后取反。有什么帮助吗?
答案 0 :(得分:0)
您在输入错误索引时遇到错字。
您可以通过使用范围循环来避免此类问题
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& a) {
for (auto& v: a) {
std::reverse(v.begin(), v.end());
for (auto& c: v) {
c = !c;
}
}
return a;
}
或避免循环
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& a)
{
std::for_each(a.begin(),
a.end(),
[](vector<int>& b) {
std::reverse(b.begin(), b.end());
std::transform(b.begin(), b.end(), b.begin(), [](int i) { return !i; })
});
return a;
}
(“修改参数和返回副本”的想法有点奇怪。您可能需要重新考虑。)