問題
Combine the rows of a 2D integer array into one array. Read rows from top to bottom and integers within each row from left to right. Skip empty rows. Preserve repeated integers and their order. Rows may have different lengths. There are exactly two array levels: rows contain only integers, with no null values or deeper lists.
Implement flatten_nested_list(values).
Input
values: The integer rows to combine, in order.
Output
Return all integers in row order. Return an empty array if there are no integers.
制約
0 ≤ number of rows ≤ 10,000. At most 10,000 integers in total. Each integer is between −1,000,000,000 and 1,000,000,000. Rows may be empty or have different lengths.
例
入力:
values = [
[1, 2],
[],
[3, 4]
]
期待される出力:
expected = [1, 2, 3, 4]
入力:
std::vector<std::vector<long long>> values = {
{1, 2},
{},
{3, 4}
};
期待される出力:
std::vector<long long> expected = {1, 2, 3, 4};
入力:
long[][] values = new long[][] {
new long[] {1, 2},
new long[] {},
new long[] {3, 4}
};
期待される出力:
long[] expected = new long[] {1, 2, 3, 4};
解説
Read 1 and 2 from the first row. Skip the empty second row. Append 3 and 4 from the last row.
入力:
values = [
[],
[]
]
期待される出力:
expected = []
入力:
std::vector<std::vector<long long>> values = {
{},
{}
};
期待される出力:
std::vector<long long> expected = {};
入力:
long[][] values = new long[][] {
new long[] {},
new long[] {}
};
期待される出力:
long[] expected = new long[] {};
解説
Both rows are empty, so there are no integers to append.
解き方のヒント
まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。
ヒント 1
行を順番にたどり、見つけた整数をそのまま追加します。
ヒント 2
空行は何も加えませんが、非空行の値の順序は保ちます。
ヒント 3
入力は2階層だけなので、再帰的な平坦化は不要です。
目安の計算量
時間 O(n)、追加メモリ O(n)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。