Easy
You are given an m x n
2D array grid
of positive integers.
Your task is to traverse grid
in a zigzag pattern while skipping every alternate cell.
Zigzag pattern traversal is defined as following the below actions:
(0, 0)
.Note that you must skip every alternate cell during the traversal.
Return an array of integers result
containing, in order, the value of the cells visited during the zigzag traversal with skips.
Example 1:
Input: grid = [[1,2],[3,4]]
Output: [1,4]
Explanation:
Example 2:
Input: grid = [[2,1],[2,1],[2,1]]
Output: [2,1,2]
Explanation:
Example 3:
Input: grid = [[1,2,3],[4,5,6],[7,8,9]]
Output: [1,3,5,7,9]
Explanation:
Constraints:
2 <= n == grid.length <= 50
2 <= m == grid[i].length <= 50
1 <= grid[i][j] <= 2500
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<Integer> zigzagTraversal(int[][] grid) {
List<Integer> ans = new ArrayList<>();
int m = grid.length;
int n = grid[0].length;
int i = 0;
boolean flag = true;
boolean skip = false;
while (i < m) {
if (flag) {
for (int j = 0; j < n; j++) {
if (!skip) {
ans.add(grid[i][j]);
}
skip = !skip;
}
} else {
for (int j = n - 1; j >= 0; j--) {
if (!skip) {
ans.add(grid[i][j]);
}
skip = !skip;
}
}
flag = !flag;
i++;
}
return ans;
}
}