給定一個(gè)二進(jìn)制矩陣 A,我們想先水平翻轉(zhuǎn)圖像偏窝,然后反轉(zhuǎn)圖像并返回結(jié)果收恢。
水平翻轉(zhuǎn)圖片就是將圖片的每一行都進(jìn)行翻轉(zhuǎn)武学,即逆序。例如伦意,水平翻轉(zhuǎn) [1, 1, 0] 的結(jié)果是 [0, 1, 1]火窒。
反轉(zhuǎn)圖片的意思是圖片中的 0 全部被 1 替換, 1 全部被 0 替換驮肉。例如沛鸵,反轉(zhuǎn) [0, 1, 1] 的結(jié)果是 [1, 0, 0]。
示例 1:
輸入: [[1,1,0],[1,0,1],[0,0,0]]
輸出: [[1,0,0],[0,1,0],[1,1,1]]
解釋: 首先翻轉(zhuǎn)每一行: [[0,1,1],[1,0,1],[0,0,0]]缆八;
然后反轉(zhuǎn)圖片: [[1,0,0],[0,1,0],[1,1,1]]
示例 2:
輸入: [[1,1,0,0],[,0,0,1],[0,1,1,1],[1,0,1,0]]
輸出: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解釋: 首先翻轉(zhuǎn)每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]]曲掰;
然后反轉(zhuǎn)圖片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
說明:
1 <= A.length = A[0].length <= 20
0 <= A[i][j] <= 1
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/flipping-an-image
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)奈辰,非商業(yè)轉(zhuǎn)載請注明出處栏妖。
直接遍歷,將每一行對半分進(jìn)行兌換奖恰,然后再取反
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
int i;
int t;
int count;
int x, y;
for (int j = 0; j < A.size(); j++) {
i = floor(A[j].size() / 2);
if (A[0].size() % 2 != 0)
{
A.at(j).at(i) = !A.at(j).at(i);
count = 1;
}
else
count = 0;;
while (i){
t = A.at(j).at(i - 1);
A.at(j).at(i - 1) = A.at(j).at(i + count);
A.at(j).at(i + count) = t;
A.at(j).at(i - 1) = !A.at(j).at(i - 1);
A.at(j).at(i + count) = !A.at(j).at(i + count);
count+=2;
i--;
}
}
return A;
}
用時(shí)24s吊趾。啊
倒序遍歷正序存儲同時(shí)取反
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
vector<vector<int>> B;
B = A;
for (int i = 0; i < A.size(); i++)
{
int k = 0;
for (int j = A[0].size()-1; j>=0; j--)
{
B[i][k] = !A[i][j];
k++;
}
}
return B;
}
一開始沒有初始化B,導(dǎo)致出錯(cuò)瑟啃,省事的方法:直接讓B=A
good!