Flatten a 2D Array
Flatten a list of lists into a single list — e.g. combining paginated result pages into one array.
Sample input
[[1,2],[3,4,5],[6]]
Sample output
1 2 3 4 5 6
Solution
matrix = [[1, 2], [3, 4, 5], [6]]
result = [x for row in matrix for x in row]
print(*result)
const matrix = [[1, 2], [3, 4, 5], [6]];
const result = matrix.flat();
console.log(result.join(" "));
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
int[][] matrix = {{1, 2}, {3, 4, 5}, {6}};
List<Integer> result = new ArrayList<>();
for (int[] row : matrix) {
for (int x : row) result.add(x);
}
System.out.println(result.stream().map(String::valueOf).collect(Collectors.joining(" ")));
}
}
fun main() {
val matrix = listOf(listOf(1, 2), listOf(3, 4, 5), listOf(6))
val result = matrix.flatten()
println(result.joinToString(" "))
}
let matrix = [[1, 2], [3, 4, 5], [6]]
let result = matrix.flatMap { $0 }
print(result.map(String.init).joined(separator: " "))
void main() {
final matrix = [[1, 2], [3, 4, 5], [6]];
final result = matrix.expand((row) => row).toList();
print(result.join(' '));
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<vector<int>> matrix = {{1, 2}, {3, 4, 5}, {6}};
vector<int> result;
for (auto& row : matrix) {
for (int x : row) result.push_back(x);
}
for (int i = 0; i < (int) result.size(); i++) {
cout << result[i];
if (i < (int) result.size() - 1) cout << " ";
}
cout << endl;
return 0;
}
#include <stdio.h>
int main() {
int row0[] = {1, 2};
int row1[] = {3, 4, 5};
int row2[] = {6};
int *rows[] = {row0, row1, row2};
int sizes[] = {2, 3, 1};
int numRows = 3, first = 1;
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < sizes[i]; j++) {
if (!first) printf(" ");
printf("%d", rows[i][j]);
first = 0;
}
}
printf("\n");
return 0;
}