- 首先自己犯了好几个低级错误
- 翻转的时候区间写错 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 };