Đề bài
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.
Ràng buộc
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.
Ví dụ
Đầu vào:
values = [
[1, 2],
[],
[3, 4]
]
Kết quả mong đợi:
expected = [1, 2, 3, 4]
Đầu vào:
std::vector<std::vector<long long>> values = {
{1, 2},
{},
{3, 4}
};
Kết quả mong đợi:
std::vector<long long> expected = {1, 2, 3, 4};
Đầu vào:
long[][] values = new long[][] {
new long[] {1, 2},
new long[] {},
new long[] {3, 4}
};
Kết quả mong đợi:
long[] expected = new long[] {1, 2, 3, 4};
Giải thích
Read 1 and 2 from the first row. Skip the empty second row. Append 3 and 4 from the last row.
Đầu vào:
values = [
[],
[]
]
Kết quả mong đợi:
expected = []
Đầu vào:
std::vector<std::vector<long long>> values = {
{},
{}
};
Kết quả mong đợi:
std::vector<long long> expected = {};
Đầu vào:
long[][] values = new long[][] {
new long[] {},
new long[] {}
};
Kết quả mong đợi:
long[] expected = new long[] {};
Giải thích
Both rows are empty, so there are no integers to append.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Duyệt các hàng theo thứ tự và thêm từng số nguyên bạn gặp.
Gợi ý 2
Hàng rỗng không đóng góp gì, nhưng vẫn giữ nguyên thứ tự của mọi giá trị ở các hàng không rỗng.
Gợi ý 3
Đầu vào chỉ sâu 2 mức, nên không cần flatten đệ quy.
Độ phức tạp mong đợi
thời gian O(n), bộ nhớ phụ O(n)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.