Lấy cảm hứng từ bài viết StackOverflow này .
Giới thiệu
Công việc của Bob là tạo bảng tính và sắp xếp chúng. Cách anh ta tổ chức chúng được biết đến rất ít ngoại trừ Bob, nhưng anh ta tạo ra một danh sách từng bảng tính nằm trong cùng một nhóm. Có một loạt dữ liệu trong bảng tính mà anh ta tạo ra, nhưng chỉ có một dữ liệu mà chúng tôi đang xem ngay bây giờ: Số ngày giữa ngày anh ta bắt đầu công việc này và ngày anh ta tạo ra bảng tính. Ngày đầu tiên anh ta tạo ra hai bảng tính, ghi chú cả hai 0
và sắp xếp chúng vào vị trí thích hợp của chúng.
Bây giờ, ông chủ của anh ta đang yêu cầu xem xét lại các loại bảng tính đã xảy ra mỗi ngày và công việc của bạn là viết một số mã sẽ tìm ra điều đó cho Bob; anh ta có quá nhiều bảng tính để làm điều đó bằng tay.
Đầu vào
Thông tin của Bob mà anh ấy cung cấp cho bạn xuất hiện dưới dạng một mảng răng cưa (được lập chỉ mục 0 hoặc 1) trong đó mỗi mốc dữ liệu có dạng x = a[i][j]
. a
là cái mà tôi gọi là mảng răng cưa, i
là loại bảng tính và x
là ngày mảng được tạo. j
là không quan trọng.
Nhiệm vụ
Đưa ra một mảng lởm chởm của các ngày tạo bảng tính được sắp xếp theo loại của chúng, trả về một mảng các loại bảng tính lởm chởm được tổ chức theo ngày tạo bảng tính.
Ví dụ
Bob sẽ không để lại cho bạn dữ liệu trừu tượng này. Anh ấy đưa cho tôi một tập hợp con của một số bảng tính của anh ấy để giúp bạn tìm ra mọi thứ được cho là gì.
Ví dụ đầu vào (0-index):
a = [
[3,2,5,0], # Bob doesn't necessarily sort his lists
[1,3],
[2,1,0,4],
[4,5,3],
[6,6]
]
Ví dụ đầu ra (với lời bình luận, tất nhiên là không bắt buộc):
output = [
[0,2] # On day 0, Bob made one type 0 and one type 2 spreadsheet
[1,2] # On day 1, Bob made one type 1 and one type 2 spreadsheet
[0,2] # On day 2, Bob made one type 0 and one type 2 spreadsheet
[0,1,3] # On day 3, Bob made one type 0, one type 1, and one type 3 spreadsheet
[2,3] # On day 4, Bob made one type 2 and one type 3 spreadsheet
[0,3] # On day 5, Bob made one type 0 and one type 3 spreadsheet
[4,4] # On day 6, Bob made two type 4 spreadsheets
]
Lưu ý rằng Bob không phải lúc nào cũng tạo hai bảng tính mỗi ngày và do đó, đầu ra cũng có thể bị lởm chởm. Nhưng anh ta luôn tạo ra ít nhất một bảng tính mỗi ngày, do đó, đầu ra sẽ không bao giờ cần chứa các mảng trống - mặc dù nếu đầu ra của bạn có các mảng trống ở cuối, bạn không cần phải loại bỏ chúng.
Nhiều trường hợp thử nghiệm:
[[3,5,6,2],[0,0,0],[1,0,3,4]] -> [[1,1,1,2],[2],[0],[0,2],[2],[0],[0]]
[[-1]] -> Undefined behavior, as all input numbers will be non-negative integers.
[[0],[0],[],[0]] -> [[0,1,3]]
Danh sách bên trong của đầu ra không cần phải được sắp xếp.
Như mọi khi, không có sơ hở tiêu chuẩn, và tất nhiên mã ngắn nhất sẽ thắng.
(Vì đây là câu hỏi đầu tiên của tôi, xin vui lòng cho tôi biết bất cứ điều gì tôi có thể làm để cải thiện nó.)
[[0 0]]
cho đầu ra [[0 0] []]
?