九度 1534 陣列中第K小的數字 二分法變形

2021-09-06 14:07:45 字數 1120 閱讀 3363

題目描述:

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

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

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

思路

1. 多年前第一次搞這道題就沒弄出來, 今天是大概記得做法, 不過 failed again, 總結起來, 仍然是沒有意識到 int 的特殊性, 即 (int+int)/2 得到的仍然是 int

2. 涉及到二分查詢, 用我以前總結的步驟來做, 非常順利. 核心就是 mid = target, high = mid-1, 嘗試向左. 最後返回的應該是 low

3. target 沒有明確給出, 是通過 ini 的特殊性拼湊出來的

4. 曾想將兩個陣列拼成矩陣, 因為 leetcode 和劍指 offer 上都有類似的矩陣二分查詢題目, 但失敗了

**

#include #include 

#include

using

namespace

std;

long

long a[100010

];long

long b[100010

];long

long search(long

long x, long

long m, long

long

n) else

if(j >= 0

) cnt += (j+1

); }

}//cout << "cnt = " << cnt << endl;

return

cnt;

}long

long docal(long

long m, long

long n, long

long

k) else

}return

low;

}int

main()

return0;

}

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

題目鏈結 題目大意 給出兩個長度分別為m和n的陣列a,b,從兩個陣列中各任選乙個相加,將和放入乙個新陣列c,現在問新陣列從小到大排序後第k個數是多大。m,n,k 1 m,n 100000,1 k n m 陣列元素整型範圍 解題思路 c陣列大小為n m,而且陣列元素有2e9這麼大,存不下,複雜度高,乍...

題目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小的數字。輸入 輸入可能包含多個測試案例。對於每個測試案例,輸入的第一行...

陣列中第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小的數字。輸入 輸入可能包含多個測試案例。對於每個測試案例,輸入的第一行...