查找 九度教程第20題 二分查找 水~

題目鏈接

輸入數組長度 n 輸入數組 a[1…n] 輸入查找個數m 輸入查找數字b[1…m] 輸出 YES or NO 查找有則YES 否則NO 。
輸入描述:
輸入有多組數據。
每組輸入n,然後輸入n個整數,再輸入m,然後再輸入m個整數(1<=m,n<=100)。
輸出描述:
如果在n個數組中輸出YES否則輸出NO。
示例1
輸入
5
1 5 2 4 3
3
2 5 6
輸出
YES
YES
NO

解題思路:
數組排序之後二分查找即可~
AC代碼:

#include<iostream>
#include<algorithm>
using namespace std;
int num[101];
int n, m, goal;
bool find(int x) {
	int l = 1, r = n;
	while (r >= l) {
		int mid = (l + r) / 2;
		if (num[mid] == goal)return true;
		else if (num[mid] > goal) {
			r = mid - 1;
		}
		else l = mid + 1;
	}
	return false;
}
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> num[i];
	}
	cin >> m;
	sort(num + 1, num + 1 + n);
	while (m--) {
		cin >> goal;
		if (find(goal)) {
			cout << "YES" << endl;
		}
		else cout << "NO" << endl;
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章