本人水平有限,第一次寫題解,哪處有指點的,歡迎各位點評。
成都創(chuàng)新互聯(lián)業(yè)務(wù)包括:成品網(wǎng)站、企業(yè)產(chǎn)品展示型網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、電子商務(wù)型網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)(多語言)、購物商城網(wǎng)站建設(shè)、定制網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)等。效率優(yōu)先,品質(zhì)保證,用心服務(wù)是我們的核心價值觀,我們將繼續(xù)以良好的信譽為基礎(chǔ),秉承穩(wěn)固與發(fā)展、求實與創(chuàng)新的精神,為客戶提供更全面、更優(yōu)質(zhì)的互聯(lián)網(wǎng)服務(wù)!代碼參考?
#includeusing namespace std;
const int N = 100006;
typedef long long LL;//此處long long 題目要求小于2e9 用int也不會爆
int n,m;
LL a[N],b[N];
bool ffind(int x) // 二分查找
{
int l = 0,r = m - 1,mid;
while(l< r)
{
mid = (l + r) / 2;//此處也可以改為加(l + r + 1) / 2 相應(yīng)下面也需修改
if(b[mid] >= x) r = mid;
else l = mid + 1;
}
// 二分完之后 l = r 然后判斷x是否存在于數(shù)組b 即特殊貢獻獎名單中是否存在x
if(b[l] != x) return false;// 判斷 false 的情況,剩余都為true
return true;
}
int main()
{
cin >>n >>m;
for(int i = 0;i< n;i++) cin >>a[i];
for(int i = 0;i< m;i++) cin >>b[i];
sort(b,b + m);// 二分查找 前提條件:針對有序數(shù)列
for(int i = 0;i< n;i++)
if(ffind(a[i])) cout<< a[i]<< ' ';
return 0;
}
回顧二分模版
紅色區(qū)域的右邊界值??記為 往左尋找 ?
左不變 即 l = 0 ?????r = mid;?
藍色區(qū)域的左邊界值 ?記為 往右尋找
右不變 即r = n - 1 ??l = mid; (最終相等且非0,陷入死循環(huán),所以需l + r + 1)
本人努力充電中,一步一步持續(xù)。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧