- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi có giải pháp sau đây, nhưng tôi nghe được từ những người bình luận khác rằng đó là O(N * K * K)
,而不是 O(N * K)
其中 N
Đúng K
độ dài (tối đa) của danh sách,K
là số lượng danh sách. Ví dụ, đưa ra danh sách [1, 2, 3]
Và [4, 5]
,N
là 3 và K
Đó là 2.
/**
* Định nghĩa danh sách liên kết đơn.
* lớp công khai ListNode {
* giá trị int;
* ListNode tiếp theo;
* ListNode(int x) { val = x }
* }
*/
Giải pháp lớp {
khoảng trống riêng tư trước (ListNode cuối cùng [] listNodes, chỉ mục int cuối cùng) {
listNodes[index] = listNodes[index].next;
}
công khai ListNode mergeKLists(ListNode cuối cùng[] listNodes) {
ListNode được sắp xếpListHead = null;
ListNode được sắp xếpListNode = null;
int liên kết Index;
LÀM {
int minValue = Số nguyên.MAX_VALUE;
chỉ số liên kết = -1;
for (int listIndex = 0; listIndex < listNodes.length; listIndex++) {
ListNode cuối cùng listNode = listNodes[listIndex];
if (listNode != null && listNode.val < minValue) {
minValue = listNode.val;
liên kết Index = listIndex;
}
}
if (liên kếtIndex != -1) {
if (sortListNode == null) {
được sắp xếpListNode = ListNode mới (minValue);
đã sắp xếpListHead = đã sắp xếpListNode;
}
khác {
được sắp xếpListNode.next = ListNode mới (minValue);
sắp xếpListNode = sắp xếpListNode.next;
}
nâng cao (listNodes, chỉ số liên kết);
}
}
trong khi (liên kếtIndex != -1);
trả về đã sắp xếpListHead;
}
}
Lý do của tôi là làm trong khi
Phần thân của vòng lặp sẽ xuất hiện N
lần (vì làm trong khi
Điều kiện dừng của vòng lặp là khi danh sách dài nhất đã được lặp lại), trong khi làm trong khi
hình tròn for
Thân vòng lặp sẽ xuất hiện K
hạng hai(listNodes.length
),sản xuất O(n*k)
.
Tại sao giải pháp trênO(n * k * k)
Vải len?
câu trả lời hay nhất
Danh sách kết quả của bạn sẽ chứa nhiều nhất n * k dự án. Chi phí để thêm mỗi hạng mục là O(k)(Thực hiện vòng lặp bên trong k Lặp lại để kiểm tra phần đầu của mỗi danh sách). Do đó, tổng thời gian chạy là O(n * k * k).
Về thuật toán - hợp nhất các danh sách liên kết được sắp xếp K, tại sao độ phức tạp lại là O(N * K * K) thay vì O(N * K)? https://stackoverflow.com/questions/53454615/
Tôi gặp phải điều gì đó lạ khi sử dụng mã trạng thái từ thư viện yêu cầu. Mỗi mã trạng thái HTTP có một hằng số và một số có bí danh (ví dụ: dấu kiểm bao gồm 200): url = 'https://httpbin
Đây là mã tôi nhận được, nhưng tôi không biết hai dòng này có nghĩa là gì: o[arr[i]] = o[arr[i]] || {}; mã: var GLOBAL={};
Vì vậy, câu trả lời cho câu hỏi Sự khác biệt giữa Θ(n) và O(n) là gì “Về cơ bản, khi chúng ta nói một thuật toán là O(n), thì nó cũng là O(n2), O(n1000000), O (n1000000)
Đây là một suy nghĩ nhanh; có ai có thể nói rằng O(∞) thực sự là O(1) không? Ý tôi là nó không phụ thuộc vào kích thước đầu vào? Vì vậy, theo một cách nào đó, nó không đổi, mặc dù nó là vô hạn. Hay O(∞) là cách "chính xác" duy nhất để thể hiện nó? Câu trả lời hay nhất là vô hạn
Điều này có đúng không: log(A) + log(B) = log(A * B) [0] Điều này cũng đúng phải không? O(log(A)) + O(log(B)) = O(log(A * B)) [1] Theo như tôi hiểu thì O(f
Tôi đang giải quyết một vấn đề cho một bài tập phỏng vấn nhưng dường như tôi không thể tìm ra câu trả lời phức tạp về thời gian và không gian cho câu hỏi sau: Cho hai Danh sách liên kết được sắp xếp, hợp nhất chúng vào danh sách thứ ba tôi
Tôi hiểu ký hiệu Big-Oh. Nhưng làm cách nào để giải thích O(O(f(n))) nghĩa là gì? Nó có nghĩa là tốc độ tăng trưởng của tăng trưởng? Câu trả lời tốt nhất x = O(n) về cơ bản có nghĩa là x <= kn đối với một số hằng số k.
Tôi đang viết một hàm lấy một đối tượng và một phép chiếu để biết nó phải hoạt động trên trường nào. Tôi đang tự hỏi liệu mình có nên sử dụng chuỗi như thế này không: const o = { a: 'Hello There' };
Theo trực giác, tôi nghĩ ba biểu thức này tương đương nhau. Ví dụ: nếu một thuật toán chạy trong O(nlogn) + O(n) hoặc O(nlogn + n) (tôi nhầm lẫn), tôi có thể cho rằng đó là thuật toán O(nlogn) không? Sự thật là gì?
Theo Alex Martelli trong Python in a Nutshell của O'Reilly, lớp phức tạp là O(n) + O(n) = O(n). Vì thế tôi tin điều đó. Nhưng tôi đang bối rối. Anh giải thích: “Hai người N.
Sự khác biệt giữa O(n^2) và O(n.log(n)) là gì? Độ phức tạp của câu trả lời hay nhất tăng nhanh hơn với n^2. Giới thiệu về big-o - Ký hiệu Big-O: sự khác biệt giữa O(n^2) và O(n
Bất cứ khi nào tôi nhận được email từ MS Outlook, tôi nhận được dấu này (không có dấu cách) xuất hiện dưới dạng? trong <>. Khi tôi thay đổi nó thành ISO-8859-1, bộ ký tự trang trình duyệt được mã hóa dưới dạng UTF-8.
Tôi gặp khó khăn khi hiểu các tuyên bố sau đây từ Thuật toán của S. Dasgupta, CH Papadimitriou và UV Vazirani - trang 24. Họ sẽ tính tổng bảng trong O(n)
Tôi đã thực hành một số câu hỏi trên bánh phỏng vấn và giải pháp đưa ra trong câu hỏi 2 đã sử dụng hai vòng lặp for riêng biệt (không lồng nhau) và người cung cấp giải pháp tuyên bố rằng họ đã giải quyết nó trong thời gian O(n). Theo những gì tôi hiểu, đây sẽ là thời gian O(2n). Tôi có nghĩ sai không?
Câu hỏi ngây thơ về cú pháp Java. T chấp nhận (khách truy cập ObjectVisitorEx); nghĩa là gì? Tương đương C# là gì? Câu trả lời hay nhất là trong C#, có thể là: O Accept(
Giả sử tôi có một mảng có độ dài n và tôi sắp xếp nó bằng thuật toán sắp xếp mất nlogn thời gian. Sau khi nhận được mảng được sắp xếp này, tôi lặp qua nó để tìm bất kỳ phần tử trùng lặp nào có thời gian tuyến tính. Tôi hiểu rằng vì các hoạt động diễn ra riêng biệt nên thời gian là O(
Kết quả tính tổng O(1)+O(2)+ .... +O(n) là bao nhiêu? Tôi đã thấy giải pháp của nó ở đâu đó: O(n(n+1) / 2) = O(n^2) nhưng tôi không hài lòng với nó vì O(1) = O(2) = co
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 11 năm trước. Có thể trùng lặp: Giải thích bằng tiếng Anh đơn giản về Big O Tôi nghĩ đây có thể là nội dung được dạy trong lớp, nhưng dưới dạng tự học
Giả sử tôi có hai thuật toán: for (int i = 0; i 2) còn cho trước một số n - trong đó n điều này xảy ra như thế nào thực sự phụ thuộc vào thuật toán liên quan - đối với ví dụ cụ thể của bạn, n 2) Các lần riêng biệt, bạn có thể thấy: Θ (N)
Câu hỏi này đã có câu trả lời ở đây: Ví dụ về thuật toán thời gian giai thừa O( n! ) (4 câu trả lời) Đã đóng 6 năm trước. Tôi đã thấy các ví dụ big-o được biểu thị bằng O(X!) nhưng
Tôi là một lập trình viên xuất sắc, rất giỏi!