gpt4 book ai didi

c++ - 如何在C++中计算重复数

转载 作者:行者123 更新时间:2023-12-02 09:59:53 26 4
gpt4 key购买 nike

当用户输入数字时,我尝试使用count重复项的数量。
例如,用户输入以下顺序:

i/p  : 1,3,3,4,4,4,5,5,5 
输出应为:
o/p :  3 
这是我所拥有的:

#include <bits/stdc++.h>
#include <iostream>

using namespace std;

int countduplicate(vector<int> number)
{

std::set<int> setuniquenumber(number.begin(),number.end());
std::vector<int>(setuniquenumber.begin(),setuniquenumber.end());

}

int main()
{


}
直播节目链接: https://onlinegdb.com/Byetbj_MWD
我正在使用 this link作为引用。
谢谢您的帮助。

最佳答案

目前尚不清楚,是否对std::vector中的值进行了排序或允许对其进行排序。这有所作为。
无论如何,我将向您展示2个解决方案。
第一。我们将对 vector 中的值进行排序。然后,我们将遍历所有值。如果当前值等于前一个值,并且尚未为该值增加计数器,则将增加重复计数器。
我们将通过对先前值和当前值进行简单的 bool(boolean) 比较来确定这一点。
非常简单明了。

第二种解决方案(这是我的首选解决方案)使用标准方法解决此类问题。我将计算所有出现的不同整数。为此,您可以使用std::mapstd::unordered_map。这里的重要部分是index operator的功能。
这个

Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist.


使用 counter[i]++;,或者值i已经存在并且其计数器将增加,或者,如果值i之前不存在,则将创建一个条目,并且库将增加。
在ned处,我们将仅对值> 1的所有计数器进行计数,因为在这种情况下,那就是或的含义。
请参阅:
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>

int countduplicate1(std::vector<int> number) {

// Sort a vector, so that all duplicates are adjacent
std::sort(number.begin(), number.end());

// The result. Counter for duplicates
int counter{};
bool newNumber{ true };

// Go through all digits and check, if duplicate
for (size_t i{}; i < number.size(); ++i) {

// If duplicate, but was not already counted before
if ((i > 0) && newNumber && (number[i] == number[i - 1]))
++counter;
newNumber = ((i > 0) && (number[i] != number[i - 1]));
}
return counter;
}

int countduplicate2(std::vector<int> number) {
// Counter for occurence of an integer
std::map<int, size_t> counter{};

// Count all different integer
for (int i : number) counter[i]++;

// Duplicate means that an integer is avaliable more than once
return std::count_if(counter.begin(), counter.end(), [](const std::pair<int, size_t>& c) {return c.second > 1; });
}

int main() {

std::vector<int> vect{ 1,3,3,4,4,4,7,9,9,9,8 };

std::cout << countduplicate1(vect) << '\n';
std::cout << countduplicate2(vect) << '\n';

return 0;
}

关于c++ - 如何在C++中计算重复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63202046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com