Menu
CoddyTech

Subsets

Trung bìnhQuay luiThao tác bitpython iconjava iconcpp iconc iconjs icon+10

Bạn nhận được một danh sách nums gồm các số nguyên khác nhau. Hãy trả về mọi tập con của danh sách, bao gồm tập rỗng và toàn bộ danh sách, nên n giá trị tạo thành 2^n tập con. Viết các giá trị trong mỗi tập con theo thứ tự tăng dần, rồi liệt kê các tập con theo thứ tự từ điển: so sánh từng giá trị của hai tập con, vị trí khác nhau đầu tiên sẽ quyết định thứ tự; nếu một tập con là phần đầu của tập con kia thì tập con đó đứng trước. Với [1, 2], đáp án là [[], [1], [1, 2], [2]].

Hàm

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
các giá trị đều khác nhau, theo thứ tự bất kỳ
Trả vềinteger-2d-array
mọi tập con, mỗi tập được sắp xếp theo thứ tự tăng dần và được liệt kê theo thứ tự từ điển

Ràng buộc

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • Tất cả giá trị trong nums đều khác nhau.
  • nums có thể ở bất kỳ thứ tự nào.

Ví dụ

Đầu vào
nums = [3, 1, 2]
Đầu ra
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Giải thích
Ba giá trị tạo ra 2^3 = 8 tập con. [1, 2] đứng trước [1, 2, 3] vì nó là phần đầu, và [1, 2, 3] đứng trước [1, 3] vì 2 nhỏ hơn 3 ở vị trí thứ hai.
challenge icon

Câu hỏi mở rộng

Bạn có thể tạo cùng danh sách mà không dùng đệ quy, bằng cách xây dựng từng tập hợp con trực tiếp từ tập hợp đứng trước nó không?

Đặt lại code
def subsets(nums):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums = [3, 1, 2]

Đầu ra mong đợi

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]