Tôi gặp một câu hỏi khi tôi giải quyết this LeetCode problem. Mặc dù giải pháp của tôi đã được hệ thống chấp nhận, tôi vẫn không có ý tưởng nào sau khi tìm kiếm trực tuyến cho câu hỏi sau: What is the time complexity of dict.keys() operation?
Nó có trả về một cái nhìn của các phím hoặc danh sách thực (các cửa hàng trong bộ nhớ) của các khóa không?Độ phức tạp của dict.keys trong Python là bao nhiêu?
Trả lời
Trong Python 2, đó là O (n) và nó tạo danh sách mới. Trong Python 3, nó là O (1), nhưng nó không trả về một danh sách. Để vẽ một phần tử ngẫu nhiên từ số keys
của dict, bạn cần phải chuyển đổi nó thành một danh sách.
Có vẻ như bạn có thể đang sử dụng random.choice(d.keys())
cho phần 3 của vấn đề đó. Nếu vậy, đó là O (n), và bạn đã nhận nó sai. Bạn cần triển khai bảng băm của riêng mình hoặc duy trì một danh sách các phần tử riêng biệt mà không phải hy sinh các trường hợp chèn và xóa O (1) trung bình.
Tôi đã sử dụng 'return self.elements.keys() [randint (0, len (self.elements) - 1)]' và nó đã được chấp nhận ('self.elements là một đối tượng dict'). – Jason
@ Jason: Vâng, đó không phải là O (1). – user2357112
Như bạn đã nói "Trong Python 3, nó là O (1)". Nếu 'self.elements.keys()' là 'O (1)', thì toàn bộ biểu thức sẽ chạy trong 'O (1) '. Nếu tôi phạm sai lầm, hãy sửa tôi :) – Jason
- 1. Độ phức tạp của HashMap.containsValue() trong java là bao nhiêu?
- 2. Độ phức tạp của LinkedList.getLast() trong Java là bao nhiêu?
- 3. Độ phức tạp của HashMap.containsKey() trong java là bao nhiêu?
- 4. Độ phức tạp của mã đã cho là bao nhiêu?
- 5. Độ phức tạp của hàm đếm trong clojure là bao nhiêu?
- 6. Độ phức tạp của việc tra cứu tên trong danh sách R là bao nhiêu?
- 7. Độ phức tạp của chức năng của tôi là bao nhiêu?
- 8. Big O, độ phức tạp của việc tổng hợp một chuỗi số n là bao nhiêu?
- 9. Độ phức tạp của OrderedDictionary là gì?
- 10. Haskell GHC: độ phức tạp về thời gian của một mẫu khớp với N constructors là bao nhiêu?
- 11. Độ phức tạp của set_intersection trong C++ là gì?
- 12. Độ phức tạp thời gian của random.sample
- 13. Độ phức tạp của các hoạt động bộ python?
- 14. Độ phức tạp tiệm cận của List.Add là gì?
- 15. Độ phức tạp của chức năng nhật ký là gì?
- 16. Tại sao độ phức tạp của phương thức list.append() của python là O (1)?
- 17. Độ phức tạp về thời gian của system.out.println
- 18. Độ phức tạp của thuật toán
- 19. Giảm độ phức tạp của Cyclomatic
- 20. Độ phức tạp của ưu tiênQueue addAll()
- 21. Độ phức tạp của thuật toán
- 22. Độ phức tạp thời gian chạy của các hàm danh sách python là gì?
- 23. Độ phức tạp về thời gian được đặt trong Java
- 24. Các công cụ phân tích phức tạp mã vượt quá độ phức tạp của chu trình
- 25. Độ dài tối đa của một ListProperty là bao nhiêu?
- 26. Độ dài tối đa của tên facebook là bao nhiêu?
- 27. Độ phức tạp của hàm find() trong std :: map?
- 28. Độ phức tạp của thời gian nguyên trong Haskell
- 29. Độ dài bằng byte của NSString là bao nhiêu?
- 30. Cú pháp phức tạp- Python
Độ phức tạp của nó là '0 (1)' trong Python 3.x. Trong Python 2.x, nó trả về một danh sách để populating nó hoặc thực hiện một số tra cứu trên nó có '0 (n)'. – ozgur
Bạn đang hỏi về Python2 hay Python3? –
@ ozgur - Đúng, nhưng 'cho _ trong {} .keys(): pass' là' O (n) 'trong cả hai phiên bản. –