832. Flipping an Image

LeetCode оригинал: C# #array #csharp #leetcode #string

: 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# решение

сопоставлено/оригинал
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;
    }
}

C++ решение

auto-draft, проверить перед отправкой
#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 решение

auto-draft, проверить перед отправкой
import 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 решение

сопоставлено/оригинал
var 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 решение

сопоставлено/оригинал
class 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] ^ 1

Go решение

сопоставлено/оригинал
func 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
}

Algorithm

Переверните каждую строку по горизонтали, обменяв элементы слева направо и наоборот.

Инвертируйте каждую строку, заменив каждый 0 на 1 и каждый 1 на 0.

Верните преобразованное изображение.

😎

Вакансии для этой задачи

Показаны активные вакансии с пересечением по тегам задачи.

Все вакансии
Активных вакансий пока нет.