Sponsored
Sponsored
This approach involves two distinct passes over the matrix: first to flip each row horizontally by reversing the elements, and second to invert all the elements by replacing 0s with 1s and vice versa.
Time Complexity: O(n^2) as each element is visited once.
Space Complexity: O(1) as no additional space proportional to input size is used.
1public class Solution {
2 public int[][] flipAndInvertImage(int[][] image) {
3 for (int[] row : image) {
4 int start = 0, end = row.length - 1;
5 while (start <= end) {
6 int temp = row[start] ^ 1;
7 row[start] = row[end] ^ 1;
8 row[end] = temp;
9 start++;
10 end--;
11 }
12 }
13 return image;
14 }
15
16 public static void main(String[] args) {
17 int[][] image = {{1, 1, 0}, {1, 0, 1}, {0, 0, 0}};
18 Solution solution = new Solution();
19 solution.flipAndInvertImage(image);
20 }
21}
The Java solution uses a two-pointer method to reverse and invert the image. A single loop manages both operations to optimize performance.
This approach attempts to combine the flipping and inverting processes in one pass to enhance efficiency, leveraging the symmetry characteristics of the problem.
Time Complexity: O(n^2) given each element may potentially be processed.
Space Complexity: O(1) since modifications are in place.
1public
The Java solution processes each row by considering positions from start and end. Each time identical pairs are inverted together for a minimalistic approach.