我编写了一个简单的C ++程序,可以找到数组中有多少重复项。
这对我来说非常合适,但这是非常长的代码。我想知道是否有任何可以成功执行此任务的短代码:
$image = $html2->find('meta[property=og:image]',0);
$image = $image->content;
$img = str_replace('-500x330', '', $image);
答案 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。)