Hướng dẫn next permutation python library - thư viện python hoán vị tiếp theo

Đưa ra một mảng mảng [] có kích thước n, nhiệm vụ là in từ vựng tiếp theo từ vựng tiếp theo của mảng đã cho. Nếu không tồn tại bất kỳ hoán vị lớn hơn, thì hãy in hoán vị nhỏ nhất về mặt từ vựng của mảng đã cho.arr[] of size N, the task is to print the lexicographically next greater permutation of the given array. If there does not exist any greater permutation, then print the lexicographically smallest permutation of the given array.

Examples:

Đầu vào: n = 6, mảng = {1, 2, 3, 6, 5, 4} đầu ra: {1, 2, 4, 3, 5, 6} Giải thích: hoán vị tiếp theo của mảng đã cho là {1, 2 , 4, 3, 5, 6}. N = 6, arr = {1, 2, 3, 6, 5, 4}
Output: {1, 2, 4, 3, 5, 6}
Explanation: The next permutation of the given array is {1, 2, 4, 3, 5, 6}.

Đầu vào: N = 3, ARR = {3, 2, 1} Đầu ra: {1, 2, 3} Giải thích: Như ARR [] là hoán vị cuối cùng. & Nbsp; Vì vậy, hoán vị tiếp theo là thấp nhất. N = 3, arr = {3, 2, 1}
Output: {1, 2, 3}
Explanation: As arr[] is the last permutation. 
So, the next permutation is the lowest one.

Cách tiếp cận vũ lực:

Một cách đơn giản để giải quyết vấn đề này là tạo ra tất cả các hoán vị của mảng đã cho và trả về hoán vị chỉ lớn hơn mảng đã cho. & NBSP;

Độ phức tạp về thời gian: O [n * n!], Vì tổng số hoán vị có thể là không gian phụ trợ: O [n], để lưu trữ hoán vị trong một số cấu trúc dữ liệu.: O[N * N!], as the total possible permutations are N!
Auxiliary Space: O[N], for storing the permutation in some data structure.

Hoán vị tiếp theo trong độ phức tạp thời gian tuyến tính:

Illustration: 

Hãy để thử một số ví dụ để xem liệu chúng ta có thể nhận ra một số mẫu không. & NBSP;

[3, 1, 3] = Số lớn hơn tiếp theo là 331 [5, 1, 3] = Số lớn hơn tiếp theo là 531 [1, 2, 3] Số lớn hơn là 1435 [3, 2, 1] = Chúng tôi không thể tạo một số lớn hơn số hiện tại từ tất cả các hoán vị có thể
[5, 1, 3] = next greater number is 531
[1, 2, 3] = next greater number is 132
[1, 3, 5, 4] = next greater number is 1435
[3, 2, 1] = we can’t form a number greater than the current number from all the possible permutations

Vì vậy, rõ ràng là để có được hoán vị tiếp theo, chúng ta sẽ phải thay đổi số ở vị trí càng đúng càng tốt. Mỗi hoán vị [ngoại trừ lần đầu tiên] có hậu tố ngày càng tăng. Bây giờ nếu chúng ta thay đổi mô hình từ điểm trục [trong đó hậu tố ngày càng tăng] thành biểu diễn từ vựng tiếp theo của nó, chúng ta sẽ nhận được hoán vị lớn hơn tiếp theo.

Để hiểu cách thay đổi mẫu từ Pivot, hãy xem hình ảnh dưới đây:

Quan sát hoán vị tiếp theo: & nbsp;

Minh họa về Next_Permuting

Thực hiện theo các bước dưới đây để thực hiện quan sát trên:

  • Lặp lại trên mảng đã cho từ đầu và tìm chỉ số đầu tiên [pivot] không theo thuộc tính của hậu tố không tăng, [tức là, & nbsp; mảng [i] & arr]7

    namespace2

    Độ phức tạp về thời gian: O [n], trong đó n là kích thước của mảng đã cho.AUXILIARY: O [1]O[N], where N is the size of the given array.
    Auxiliary Space: O[1]


Bài Viết Liên Quan

Chủ Đề