cấp độ 1
O [n] trong đó n là chiều dài của lát cắt. Cắt lát chỉ là "bản sao một phần của danh sách" để độ phức tạp thời gian giống như bản sao.
cấp độ 2
Vì vậy, nếu tôi muốn cắt một mảng trong vòng một thời gian, thì điều gì sẽ là một cách tối ưu để làm điều đó để tôi vẫn có thể giữ thuật toán ở độ phức tạp thời gian O [n]?
cấp độ 1
O [n+k] là trường hợp trung bình, bao gồm phải phát triển hoặc thu nhỏ danh sách để điều chỉnh số lượng các phần tử được chèn để thay thế lát cắt ban đầu.
cấp độ 1
Cắt một danh sách là O [n]. Vì bản sao chỉ là cắt tối đa trên danh sách và sao chép là O [n]. Do đó, lát cũng là o [n]
Sự phức tạp về thời gian của việc cắt trong Python là gì?
Ngoài ra độ phức tạp về thời gian của việc cắt là O [n] nếu k%len [nums]! = 0: nums [:] = nums [len [nums] -k%[len [nums]]:]+nums [: len [nums ] -K%[LEN [NUMS]]]]
Sự phức tạp về thời gian của lát cắt là gì?
Cắt lát chỉ là một phần sao chép của danh sách, vì vậy độ phức tạp của thời gian giống như bản sao. O [n+k] là trường hợp trung bình, bao gồm phải phát triển hoặc thu nhỏ danh sách để điều chỉnh số lượng các phần tử được chèn để thay thế lát cắt ban đầu.
Sự phức tạp về thời gian và không gian của việc cắt trong Python là bao nhiêu?
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
Sao chép | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Nối [1] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trung cấp pop [2] | Trung cấp pop [2] |
Chèn | Nhận mục | Nhận mục |
Thiết lập các mục | Trên] | |
Xóa mục | Trên] | |
Lặp đi lặp lại | O [1] | O [1] |
collections.deque
Pop cuối cùng
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
Sao chép | Trên] | Trên] |
Trung cấp pop [2] | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | O [1] | O [1] |
Pop cuối cùng | Trên] | Trên] |
Trung cấp pop [2]
Chèn
Hoạt động | Nhận mục | Thiết lập các mục | Xóa mục |
Thiết lập các mục | O [1] | Trên] | |
Xóa mục | O[len[s]+len[t]] | ||
Lặp đi lặp lại | Nhận lát | Được] | Del lát |
Đặt lát | O [k+n] | ||
Mở rộng [1] | Loại | ||
O [n log n] | nhân | ||
O [nk] | Loại | Được] | |
Del lát | nhân | O [nk] |
x trong s
- tối thiểu, tối đa
Nhận chiều dài
Một deque [hàng đợi kết thúc kép] được thể hiện nội bộ như một danh sách liên kết gấp đôi. .
nối
Hoạt động | Trường hợp trung bình | Đã khấu hao trường hợp xấu nhất |
Phụ lục | O [1] | Trên] |
nhạc pop | Trên] | Trên] |
Nối [1] | O [1] | Trên] |
O [1] | O [1] | Trên] |
Pop cuối cùng | O [1] | Trên] |
Trung cấp pop [2] | Trên] | Trên] |
Chèn
Nhận mục
Thiết lập các mụck from a list of size n shifts all elements after k by one slot to the left using memmove. n - k elements have to be moved, so the operation is O[n - k]. The best case is popping the second to last element, which necessitates one move, the worst case is popping the first element, which involves n - 1 moves. The average case for an average value of k is popping the element the middle of the list, which takes O[n/2] = O[n] operations.
Xóa mục