最先重复出现的数的位置

题目 最先重复出现
依次输入n个正整数,求最先出现重复数字的数的一对位置。

输入格式
第一行,一个整数n,1<=n<=50000。
第二行,n个正整数,空格分开,每个正整数的范围[1,1000000]。

输出格式
两个整数,分别表示最先出现重复数字的起始和结束位置。

输入/输出例子
输入:
10
23 4 2 10 5 6 7 8 2 4
输出:
3 9(2的下标)

3 9(2的下标)???2的下标不是2,8吗?
暴力解题简单易懂

#include <iostream>

using namespace std;

int main()
{
    long n, number;
    cout<<"输入数组长度:";
    cin>>n;
    int arr[n];      //可以使用vector动态数组,这里从简
    cout<< "以空格为分隔符输入数组:";
    for (int i = 0; i < n; i++)
        cin >> arr[i];

    for (int j = 0; j <= n; j++) {    //每输入一个数就判断是不是与前面输入的数字重复
        for (int k = j+1; k <= n; k++) {
//            cout<<"arr[j]:"<<arr[j]<<endl;
//            cout<<"arr[k]:"<<arr[k]<<endl;
            if (arr[j] == arr[k]) {
                cout << "出现重复,下标为:" << j+1 << "和" << k << endl;
                exit(0);  // 退出程序
            }
        }
    }


    return 0;
}

没输入一个整数,就在数组中搜索是否有相同的。有相同的,就是这两个数了;没用相同的,则加入数组

方法一, 暴力判断,循环判断当前数是否与它前面的数重复,重复了就是答案,然后确定首位位置。
方法二,map存储一下每个数的下标,循环时判断当前数是否在map中,如果在map中就代表找到了答案,然后确定末尾位置。