題目描述:
給定兩個整型陣列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小的數字。輸入 輸入可能包含多個測試案例。對於每個測試案例,輸入的第一行...