题目:
Given a binary matrix A, we want to flip the image horizontally, then
invert it, and return the resulting image.To flip an image horizontally means that each row of the image is
reversed. For example, flipping [1, 1, 0] horizontally results in [0,1, 1].To invert an image means that each 0 is replaced by 1, and each 1 is
replaced by 0. For example, inverting [0, 1, 1] results in [1, 0, 0].Example 1:
Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
Explanation: First reverse each row: [[0,1,1],[1,0,1],[0,0,0]]. Then,
invert the image: [[1,0,0],[0,1,0],[1,1,1]]Example 2:
Input: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
Output:[[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]]. Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]] Notes:
1 <= A.length = A[0].length <= 20 0 <= A[i][j] <= 1
解释:
水平翻转+01转换
python代码:
class Solution(object):
def judgeCircle(self, moves):
"""
:type moves: str
:rtype: bool
"""
count_U=moves.count('U')
count_D=moves.count('D')
count_L=moves.count('L')
count_R=moves.count('R')
if(count_U==count_D and count_L==count_R):
return True
else:
return False
c++代码:
#include <algorithm>
using namespace std;
class Solution {
public:
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
if(A.size()==0 || A.empty())
{
return A;
}
for (int i=0;i<A.size();i++)
{
flip(A[i]);
invert(A[i]);
}
return A;
}
void flip(vector<int>&nums)
{
int i=0;
int j=nums.size()-1;
while (i<j)
{
swap(nums[i++],nums[j--]);
}
}
void invert(vector<int>&nums)
{
for (int i=0;i<nums.size();i++)
{
nums[i]=1-nums[i];
}
}
};
总结:
#include<algorithm>
里面的swap可以直接用,然后记得自己写函数的时候形参要是引用哟~