首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有重复的给定数字组合的算法?C++

在C++中,求解给定数字组合中的重复数字可以使用哈希表或者位运算的方式。

  1. 使用哈希表:首先创建一个哈希表,遍历给定的数字组合,将每个数字作为键插入哈希表中,若键已存在,则表示该数字是重复的。可以使用std::unordered_map实现哈希表。

示例代码:

代码语言:txt
复制
#include <iostream>
#include <unordered_map>
#include <vector>

std::vector<int> findDuplicates(const std::vector<int>& nums) {
    std::unordered_map<int, int> count;
    std::vector<int> duplicates;

    for (int num : nums) {
        count[num]++;
        if (count[num] > 1) {
            duplicates.push_back(num);
        }
    }

    return duplicates;
}

int main() {
    std::vector<int> nums = {1, 2, 3, 3, 4, 5, 5, 6};
    std::vector<int> duplicates = findDuplicates(nums);

    std::cout << "Duplicates: ";
    for (int duplicate : duplicates) {
        std::cout << duplicate << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

代码语言:txt
复制
Duplicates: 3 5
  1. 使用位运算:假设给定的数字范围为1到n,可以创建一个长度为n的位向量,初始化为全0。遍历给定的数字组合,对于每个数字num,将位向量中第num位取反,若取反后为0,则表示该数字是重复的。

示例代码:

代码语言:txt
复制
#include <iostream>
#include <vector>

std::vector<int> findDuplicates(const std::vector<int>& nums) {
    int n = nums.size();
    std::vector<int> bitvector(n, 0);
    std::vector<int> duplicates;

    for (int num : nums) {
        if (bitvector[num - 1] == 0) {
            bitvector[num - 1] = 1;
        } else {
            duplicates.push_back(num);
        }
    }

    return duplicates;
}

int main() {
    std::vector<int> nums = {1, 2, 3, 3, 4, 5, 5, 6};
    std::vector<int> duplicates = findDuplicates(nums);

    std::cout << "Duplicates: ";
    for (int duplicate : duplicates) {
        std::cout << duplicate << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

代码语言:txt
复制
Duplicates: 3 5

以上是一种求解给定数字组合中重复数字的算法。请注意,我们不提供腾讯云相关产品的链接,但你可以自行搜索并了解腾讯云在云计算领域的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6分30秒

【剑指Offer】3. 数组中重复的数字

24.3K
3分4秒

可以重复烧写的语音ic有哪些特征和优势

3分12秒

探讨组合加密算法在IM中的应用

1分24秒

Windows和Linux平台的逆向,有很大区别吗?【C++/病毒/内核/逆向】

1分43秒

DC电源模块的模拟电源对比数字电源的优势有哪些?

3分26秒

【算法】数据结构中的栈有什么用?

13分58秒

理性 对于观察方法的反思 scope 有欲 对数字化的反思 kpi 念兹在兹

371
15分39秒

133-尚硅谷-图解Java数据结构和算法-BST删除有二颗子树的结点

15分39秒

133-尚硅谷-图解Java数据结构和算法-BST删除有二颗子树的结点

11分36秒

132-尚硅谷-图解Java数据结构和算法-BST删除有一颗子树的结点

11分36秒

132-尚硅谷-图解Java数据结构和算法-BST删除有一颗子树的结点

12分18秒

2.3.素性检验之埃氏筛sieve of eratosthenes

领券