思路:
开数组初始化为0, 下标对应数, 值对应数第一次出现的位置. 每输入一个数, 看在数组中的值是否为0进行操作.
1 #include <iostream> 2 using namespace std; 3 4 int arr[10005]{0}; 5 6 int main() 7 { 8 ios::sync_with_stdio(false); 9 cin.tie(0); 10 11 int n; 12 cin >> n; 13 for (int i = 1; i <= n; i++) { 14 int x; 15 cin >> x; 16 if (!arr[x]) 17 arr[x] = i; 18 } 19 20 int a; 21 cin >> a; 22 cout << (arr[a] ? arr[a] : -1) << endl; 23 24 return 0; 25 }
当然用map也能解决:
1 #include <iostream> 2 #include <map> 3 using namespace std; 4 5 map<int, int> m; 6 7 int main() 8 { 9 ios::sync_with_stdio(false); 10 cin.tie(0); 11 12 int n; 13 cin >> n; 14 for (int i = 1; i <= n; i++) { 15 int x; 16 cin >> x; 17 if (!m.count(x)) 18 m[x] = i; 19 } 20 int a; 21 cin >> a; 22 cout << (m.count(a) ? m[a] : -1) << endl; 23 24 return 0; 25 }
原文:https://www.cnblogs.com/AntonLiu/p/12248935.html