放个正确代码吧!坑主要在注释那里 #include <iostream> #include <vector> #include <unordered_map> using namespace std; int main() { int n; cin >> n; vector<int> veca(n); unordered_map<int> mpa; for (int i = 0; i < n; i++) { cin >> veca[i]; mpa[veca[i]] = i; } vector<int> vecb(n); unordered_map<int> mpb; for (int i = 0; i < n; i++) { cin >> vecb[i]; mpb[vecb[i]] = i; } // 右值对象如果没有加LL强转,相当于还是int,一样会越界 = = long long maxNum = n * (n + 1LL); for (int i = 0; i < n; i++) { int posa = mpa[veca[i]]; int posb = mpb[veca[i]]; int numSame = 0; while (posa < n && posb < n && veca[posa] == vecb[posb]) { numSame++; posa++; posb++; } maxNum -= numSame; } cout << maxNum; }</int></int></int></int></unordered_map></vector></iostream>