832.翻转图像

题目:[https://leetcode-cn.com/problems/flipping-an-image/description/]
思路:翻转:定义一个int变量,头尾迭代器交换内部数据,并完成1\0的替换,头迭代器=尾迭代器或者头迭代器的位置超过为迭代器的时候表示访问完毕,数据处理完成。

class Solution {
    class Solution {
    public:
        vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
            for(auto it=A.begin();it!=A.end();++it)//第一层容器的访问、it指向一个以vector<int>为元素的容器,翻转
            {
                int exchange;//交换变量
                for(auto be=it->begin(),ed=(it->end())-1;be<=ed;++be,--ed)
                {
                    exchange = *be;//交换数据
                    *be=*ed;
                    *ed=exchange;
                }
                for(auto rev=it->begin();rev!=it->end();++rev)
                {
                    *rev=((*rev)==0)?1:0;
                }
            }
            return A;
        }
    };

讨论区精品代码:

vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
        for (auto & row : A) reverse(row.begin(), row.end());
        for (auto & row : A) for (int & i: row) i^=1;
        return A;
        }

反思感悟: 1、多维容器下迭代器的指向问题
2、多维容器的初始化,输入问题,目前想到的解决方案
a.初始化:
b.添加元素:逐层添加,利用循环
3、如何在交换数据的时候解决一起完成置换1,0:按位取反:

posted @ 2018-10-11 23:16  Kipper  阅读(87)  评论(0)    收藏  举报