Median of Two Sorted Arrays

來源:互聯網
上載者:User

標籤:java   leetcode   數組   

題目
There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
方法
轉換為尋找第k大的數。參考:http://blog.csdn.net/zxzxy1988/article/details/8587244
private int findValue(int A[], int leftA, int[] B, int leftB, int k) {if (A.length - leftA > B.length - leftB) {return findValue(B, leftB, A, leftA, k);} if (A.length - leftA == 0) {return B[k - 1];}if (k == 1) {return Math.min(A[leftA], B[leftB]);}int a = Math.min(k / 2, A.length - leftA);int b = k - a;if (A[a + leftA - 1] == B[b + leftB - 1]) {return A[a + leftA - 1];} else if (A[a + leftA - 1] > B[b + leftB - 1]){return findValue(A, leftA, B, leftB + b, k - b);} else {return findValue(A, leftA + a, B, leftB, k - a);}}    public double findMedianSortedArrays(int A[], int B[]) {    int lenA = A.length;    int lenB = B.length;    int sum = lenA + lenB;    if ((sum & 1) == 1) {    return findValue(A, 0, B, 0, sum / 2 + 1);    } else {    return (findValue(A, 0, B, 0, sum / 2) + findValue(A, 0, B, 0, (sum/2 + 1))) / 2.0;    }    }


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.