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:按位取反:

浙公网安备 33010602011771号