在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。
区块链毕设网qklbishe.com为您提供问题的解答
在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。
算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param herd1 int整型一维数组 * @param herd2 int整型一维数组 * @param herd3 int整型一维数组 * @return double浮点型 */ public int findKthNumber2(int [] A,int AStart,int [] B,int BStart,int [] C,int CStart,int k){ if (AStart>=A.length){ return findKthNumber1(B,BStart,C,CStart,k); }else if (BStart>=B.length){ return findKthNumber1(A,AStart,C,CStart,k); }else if (CStart>=C.length){ return findKthNumber1(A,AStart,B,BStart,k); } if (k==1){ return Math.min(Math.min(A[AStart],B[BStart]),C[CStart]); } int t=k>=3?k/3:1; int key1=AStart+t-1<A.length? A[AStart+t-1]:Integer.MAX_VALUE; int key2=BStart+t-1<B.length? B[BStart+t-1]:Integer.MAX_VALUE; int key3=CStart+t-1<C.length? C[CStart+t-1]:Integer.MAX_VALUE; if (key1<key2){ if (key2<key3) { return findKthNumber2(A, AStart + t , B, BStart, C, CStart, k - t); }else if (key1>key3){ return findKthNumber2(A, AStart, B, BStart , C, CStart+t, k - t); }else{ return findKthNumber2(A, AStart+t, B, BStart , C, CStart, k - t); } }else{ if (key1<key3) { return findKthNumber2(A, AStart, B, BStart + t, C, CStart, k - t); }else if (key2>key3){ return findKthNumber2(A, AStart, B, BStart , C, CStart+t, k - t); }else{ return findKthNumber2(A, AStart, B, BStart +t, C, CStart, k - t); } } } public int findKthNumber1(int [] A,int AStart,int [] B,int BStart,int k){ if (AStart>=A.length){ return B[BStart+k-1]; }else if (BStart>=B.length){ return A[AStart+k-1]; } if (k==1){ return Math.min(A[AStart],B[BStart]); } int key1=AStart+k/2-1<A.length? A[AStart+k/2-1]:Integer.MAX_VALUE; int key2=BStart+k/2-1<B.length? B[BStart+k/2-1]:Integer.MAX_VALUE; if (key1<key2){ return findKthNumber1(A,AStart+k/2,B,BStart,k-k/2); }else if (key1==key2){ return key1; }else{ return findKthNumber1(A,AStart,B,BStart+k/2,k-k/2); } } public double findMedianSortedArray (int[] herd1, int[] herd2, int[] herd3) { // write code here int allLen=herd1.length+herd2.length+herd3.length; double ans; if (allLen%2==1){ ans= findKthNumber2(herd1,0,herd2,0,herd3,0,allLen/2+1); }else{ int a=findKthNumber2(herd1,0,herd2,0,herd3,0,allLen/2); int b=findKthNumber2(herd1,0,herd2,0,herd3,0,allLen/2+1); ans=(a+b)/2.0; } return ans; } }
11:28
以上就是关于问题在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 在农场里,农民们有三个牛群,每个牛群里的牛数量不同。农民们将每个牛群牛的体重按照从小到大的顺序记录在不同的数组中。现在农民们想要知道,如果将这三个牛群合并在一起,那么中位数是多少。请你编写一个程序,找出这三个正序数组的中位数。 算法的时间复杂度应该为 O(log (m+n+p)) ,其中m、n、p分别为三个数组的长度。