检查数组c ++中的重复数字

时间:2016-10-08 06:18:13

标签: c++

我编写了一个简单的C ++程序,可以找到数组中有多少重复项。

这对我来说非常合适,但这是非常长的代码。我想知道是否有任何可以成功执行此任务的短代码:

$image = $html2->find('meta[property=og:image]',0);
$image = $image->content;

$img = str_replace('-500x330', '', $image);

2 个答案:

答案 0 :(得分:0)

我认为实现这一目标的更好方法是对数组进行排序并执行以下操作: -

(在执行此操作之前包括头文件算法。)

vector <int> a (10,0);
for (int i = 0; i <=9; i++)
{
  cout<<"Enter The Value For "<<i<<" Index"<<endl;
  cin>>a[i];
}
int count = 0;
sort(a.begin(), a.end());
for(int i = 0; i < a.size() - 1; i++) {
if (a[i] == a[i + 1]) {
    count++;
   }
}
cout << count << endl;

答案 1 :(得分:0)

恕我直言,这是实现这一目标的最简单方法 - 使用http://en.cppreference.com/w/cpp/container/multiset。它具有对数复杂性和计算重复项的内部方法。 请参考以下示例:

#include <iostream>
#include <set>

int main(int argc, char *argv[])
{
    std::multiset<int> ms;

    //Getting Input From User
    for (int i = 0; i <=9; i++)
    {
        std::cout<<"Enter The Value For "<<i<<" Index"<<std::endl;
        int val;
        std::cin>>val;
        ms.insert(val);
    }

    bool repeated_number_found=false;

    std::multiset<int>::const_iterator it = ms.begin();
    while (it != ms.end()) {
        int reper=ms.count(*it);
        if (reper > 1){
            std::cout << "Number " << *it << " repeated for " << reper << " times" << std::endl;
            repeated_number_found=true;
        }
        it = ms.upper_bound(*it);
    }

    if (!repeated_number_found){
        std::cout<<"There Is Nothing Any Repeated Number Of This Array"<<std::endl;
    }

    return 0;
}

但是使用这个容器你会丢失重复号码的第一个入口,如果对你很重要,我会建议使用struct或std :: pair来保存输入号码的入口号码。在这种情况下,您还需要提供自定义比较器(请参阅doc。)