• 首先自己犯了好几个低级错误
    • 翻转的时候区间写错 a[i][j]=a[i][n-j-1]!!!,导致越界访问
    • 忘记reverse命令可以反转
    • 认为0&0=1!0&0=0!1&1=1 0&0=0 0&&0=0
  • 思路
    • 向量vector中vector<vector<int>>a表示二维数组,a.size()表示行数;a[0].size()表示列数;
    • 翻转每一行(两种方式:reverse或者遍历翻转)
    • 然后再置反
  • 代码
  •  1 class Solution {
     2 public:
     3     vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
     4         int m,n;
     5         m=A.size();
     6         n=A[0].size();
     7         for(int i=0;i<m;i++){
     8             reverse(A[i].begin(),A[i].end());
     9             for(int j=0;j<n;j++){
    10                 if(A[i][j]==0) A[i][j]=1;
    11                 else A[i][j]=0;
    12             }
    13         }
    14 
    15         return A;
    16     }
    17 };
     1 class Solution {
     2 public:
     3     vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
     4         int m,n;
     5         m=A.size();
     6         n=A[0].size();
     7         for(int i=0;i<m;i++){
     8             for(int j=0;j<n/2;j++){
     9                 int temp;
    10                 temp=A[i][j];
    11                 A[i][j]=A[i][n-j-1];
    12                 A[i][n-j-1]=temp;
    13             }
    14         }
    15         for(int i=0;i<m;i++){
    16             for(int j=0;j<n;j++){
    17               if(A[i][j]==1){A[i][j]=0;} 
    18                 else{A[i][j]=1;}
    19         }
    20         }
    21         return A;
    22     }
    23 };