832. Flipping an Image

LeetCode の挑戦ログ

Problem

https://leetcode.com/problems/flipping-an-image/

  • バイナリマトリックス(二次元配列)が渡される
  • 各行をひっくり返した後、反転させる

Solution

class Solution {
    public int[][] flipAndInvertImage(int[][] A) {
        return Arrays.stream(A)
                .map(this::flip)
                .map(this::invert)
                .collect(Collectors.toList())
                .toArray(new int[][]{});
    }

    private int[] flip(int[] array) {
        int[] flipped = new int[array.length];
        int count = 0;
        for (int i = array.length; i > 0; i--) {
            flipped[count] = array[i - 1];
            count++;
        }
        return flipped;
    }

    private int[] invert(int[] array) {
        return Arrays.stream(array).map(i -> i == 0 ? 1 : 0).toArray();
    }
}

Impressions

  • flip は Collection にするより配列のままの方がやりやすそうだったのでそうした
  • 問題とは関係ないが、多次元配列を文字列にするのに Arrays#deepToString があるのを知った