832. Flipping an Image
leetcode
Task
: easy
Дано бинарное изображение размером n x n, необходимо перевернуть изображение по горизонтали, затем инвертировать его и вернуть результат.
Перевернуть изображение по горизонтали означает, что каждая строка изображения будет развернута.
Например, переворот строки [1,1,0] по горизонтали дает [0,1,1].
Инвертировать изображение означает, что каждый 0 заменяется на 1, а каждый 1 заменяется на 0.
Например, инверсия строки [0,1,1] дает [1,0,0].
Пример:
Input: image = [[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]]
C# solution
matched/originalpublic class Solution {
public int[][] FlipAndInvertImage(int[][] A) {
int C = A[0].Length;
foreach (var row in A) {
for (int i = 0; i < (C + 1) / 2; ++i) {
int tmp = row[i] ^ 1;
row[i] = row[C - 1 - i] ^ 1;
row[C - 1 - i] = tmp;
}
}
return A;
}
}C++ solution
auto-draft, review before submit#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int[][] FlipAndInvertImage(int[][] A) {
int C = A[0].size();
foreach (var row in A) {
for (int i = 0; i < (C + 1) / 2; ++i) {
int tmp = row[i] ^ 1;
row[i] = row[C - 1 - i] ^ 1;
row[C - 1 - i] = tmp;
}
}
return A;
}
}Java solution
auto-draft, review before submitimport java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
public int[][] FlipAndInvertImage(int[][] A) {
int C = A[0].length;
foreach (var row in A) {
for (int i = 0; i < (C + 1) / 2; ++i) {
int tmp = row[i] ^ 1;
row[i] = row[C - 1 - i] ^ 1;
row[C - 1 - i] = tmp;
}
}
return A;
}
}JavaScript solution
matched/originalvar flipAndInvertImage = function(A) {
const C = A[0].length;
for (let row of A) {
for (let i = 0; i < Math.floor((C + 1) / 2); ++i) {
let temp = row[i] ^ 1;
row[i] = row[C - 1 - i] ^ 1;
row[C - 1 - i] = temp;
}
}
return A;Python solution
matched/originalclass Solution:
def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
C = len(A[0])
for row in A:
for i in range((C + 1) // 2):
row[i], row[C - 1 - i] = row[C - 1 - i] ^ 1, row[i] ^ 1Go solution
matched/originalfunc flipAndInvertImage(A [][]int) [][]int {
C := len(A[0])
for _, row := range A {
for i := 0; i < (C+1)/2; i++ {
row[i], row[C-1-i] = row[C-1-i]^1, row[i]^1
}
}
return A
}Explanation
Algorithm
Переверните каждую строку по горизонтали, обменяв элементы слева направо и наоборот.
Инвертируйте каждую строку, заменив каждый 0 на 1 и каждый 1 на 0.
Верните преобразованное изображение.
😎