Menu
CoddyTech

Permutations

Trung bìnhQuay luipython 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 cách sắp xếp các giá trị đó, mỗi cách là một danh sách sử dụng mỗi giá trị đúng một lần, vì vậy n giá trị sẽ tạo ra n! cách sắp xếp. Liệt kê chúng theo thứ tự từ điển: so sánh hai cách sắp xếp ở từng vị trí và để vị trí khác nhau đầu tiên quyết định thứ tự. Với [1, 2, 3], thứ tự này đặt [1, 2, 3] lên đầu và [3, 2, 1] xuống cuối.

Hàm

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

Ràng buộc

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

Ví dụ

Đầu vào
nums = [3, 1, 2]
Đầu ra
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Giải thích
Các thứ tự bắt đầu bằng 1 đứng trước, và [1, 2, 3] đứng trước [1, 3, 2] vì ở vị trí thứ hai, 2 nhỏ hơn 3. Thứ tự đầu vào không quan trọng.
challenge icon

Câu hỏi mở rộng

Với một thứ tự đã cho, bạn có thể tạo thứ tự tiếp theo theo thứ tự từ điển ngay trên dữ liệu đó trong thời gian O(n) và dùng thêm O(1) bộ nhớ không?

Đặt lại code
def permute(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, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]