陣列中第K小的數字

2021-07-16 14:47:35 字數 1247 閱讀 9034

題目描述:

給定兩個整型陣列a和b。我們將a和b中的元素兩兩相加可以得到陣列c。

譬如a為[1,2],b為[3,4].那麼由a和b中的元素兩兩相加得到的陣列c為[4,5,5,6]。

現在給你陣列a和b,求由a和b兩兩相加得到的陣列c中,第k小的數字。

輸入:

輸入可能包含多個測試案例。

對於每個測試案例,輸入的第一行為三個整數m,n, k(1<=m,n<=100000, 1<= k <= n *m):n,m代表將要輸入陣列a和b的長度。

緊接著兩行, 分別有m和n個數, 代表陣列a和b中的元素。陣列元素範圍為[0,1e9]。

輸出:

對應每個測試案例,

輸出由a和b中元素兩兩相加得到的陣列c中第k小的數字。

樣例輸入:

2 2 3

1 23 4

3 3 4

1 2 7

3 4 5

樣例輸出:

5

6

google面試題

解題報告:二分法, 把a,b陣列從小到大排序,以a[0]*b[m-1]為中點與mid進行比較,0-n遞增,m-1-0遞減;

code:

ac**:

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

ll n,m,k;

ll a[100005],b[100005];

ll f(ll x)

}return num;

}void bs()

else

left=mid+1;

}printf("%lld\n",r);

}int main()

printf("%lld\n",left);

}

錯誤**:

void bs()

else if(f(mid)>k) // 說明mid太大

right=mid-1;

else

left=mid+1;

}}

題目1534 陣列中第K小的數字

題目描述 給定兩個整型陣列a和b。我們將a和b中的元素兩兩相加可以得到陣列c。譬如a為 1,2 b為 3,4 那麼由a和b中的元素兩兩相加得到的陣列c為 4,5,5,6 現在給你陣列a和b,求由a和b兩兩相加得到的陣列c中,第k小的數字。輸入 輸入可能包含多個測試案例。對於每個測試案例,輸入的第一行...

Google面試題 陣列中第K小的數字

題目1534 陣列中第k小的數字 時間限制 2 秒 記憶體限制 128 兆 特殊判題 否 提交 682 解決 105 題目描述 給定兩個整型陣列a和b。我們將a和b中的元素兩兩相加可以得到陣列c。譬如a為 1,2 b為 3,4 那麼由a和b中的元素兩兩相加得到的陣列c為 4,5,5,6 現在給你陣列...

尋找單個無序陣列中第K小的數字

1 排序 對陣列進行排序 然後前k個元素就是需要查詢的元素,排序的方法可以採用快速排序,但是我們知道在快速 排序中如果已經是有序的陣列,採用快速排序的時間複雜度是o n 2 為了解決這種問題,通常選擇隨機選擇乙個 陣列值pivot作為基準,將陣列分為s1 pivot和s2 pivot,這樣就能避免快...