cuốn sách gpt4 ai đã làm

algorithm - 在求和数组中找到第 k 个数

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:02:42 32 4
mua khóa gpt4 Nike

Cho một mảng A có N phần tử, tôi cần tìm cặp (i,j) sao cho i không bằng j và nếu với tất cả các cặp (i, j) thì nó sẽ ở vị trí thứ k.

示例:Cho N=4 và mảng A=[1 2 3 4] Nếu K=3 thì câu trả lời là 5 vì chúng ta có thể thấy rõ rằng mảng tổng sẽ như thế này:[3,4,5,5,6,7]

Tôi không thể đặt tất cả i và j lại với nhau vì N có thể lên tới 100000. Xin hãy giúp đỡ để giải quyết vấn đề này

Ý tôi là thế này:

int len=N*(N+1)/2;
int sum[len];
số int=0;
for(int i=0;i<>
for(int j=i+1;j<>
tổng[đếm]=A[i]+A[j];
count++;
}
}
// Sau đó chỉ cần tìm phần tử thứ k.

Chúng ta không thể thực hiện cách tiếp cận này

câu trả lời hay nhất

Giải pháp dựa trên thực tế sau K <= 50 : Trước tiên hãy nhìn vào cái đầu tiên K+1Các phần tử mảng được sắp xếp theo thứ tự sắp xếp. Bây giờ chúng ta có thể thử tất cả các kết hợp của chúng. Chứng minh tính đúng: Giả sử một cặp (i, j)là câu trả lời, trong đó j>K+1 .nhưng cóKCác cặp có tổng bằng nhau hoặc nhỏ hơn:(1, 2), (1, 3), ..., (1, K + 1) .Do đó, không thể K -th Đúng rồi.

khả thi O(N + K^2)theo sự lựa chọn K+1 Độ phức tạp về thời gian của việc sử dụng chọn nhanh Thuật toán số tối thiểu (có thể làm tốt hơn nhưng không bắt buộc). Bạn cũng có thể chỉ cần sử dụng một mảng và nhận được O(N * log N + K ^ 2 * log K)Sự phức tạp.

Về thuật toán - tìm số thứ k trong một mảng tổng, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/28783951/

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress