題目描述:
給定兩個整型陣列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 31 23 4
3 3 4
1 2 7
3 4 5
樣例輸出:
56
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,這樣就能避免快...