LeetCode 2020-11-10: Flipping an Image


LeetCode daily challenge の問題 Flipping an Image (easy) の挑戦メモです。

問題の概要

  • 与えられた int の二次元配列を「二値の画像」とみなし、その画像を 左右反転し、白黒を反転させた 画像を返す

考え方

  • これまた簡単な問題なので、ナイーブなやり方でも余裕で解けることでしょう
  • 今回は無意味にビット演算を使ってコードを書いてみました
  • Runtime 0ms 100% beats 達成 👍

コード

class Solution {
    public int[][] flipAndInvertImage(int[][] A) {
        int[][] result = new int[A.length][A.length];

        for (int i = 0; i < A.length; i++) {
            int r = 0;
            for (int v : A[i]) {
                r = (r << 1) | v;
            }

            r = ~r;

            for (int j = 0; j < A.length; j++) {
                result[i][j] = r & 1;
                r >>>= 1;
            }
        }

        return result;
    }
}