You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计大向量中的唯一元素数量?count函数无法适用

统计大向量中唯一元素的总数

针对大规模向量的唯一元素统计,不需要提前知晓所有元素,以下是几种主流编程语言的高效实现方法:

Python 实现

方法1:利用集合自动去重(简洁高效)

集合会自动剔除重复元素,直接取集合长度即可得到唯一元素数量:

V = [0,5,1,8,9,1,1]
unique_count = len(set(V))
print(unique_count)  # 输出:5

方法2:迭代记录已出现元素(低内存占用)

如果向量规模极大,担心集合占用内存过高,可以用字典迭代记录已出现元素,内存开销更小:

def count_unique_elements(vector):
    seen = {}
    count = 0
    for element in vector:
        if element not in seen:
            seen[element] = True
            count += 1
    return count

V = [0,5,1,8,9,1,1]
print(count_unique_elements(V))  # 输出:5

R 实现

使用unique()提取唯一元素后,用length()统计数量,适合R语言环境下的向量处理:

V <- c(0,5,1,8,9,1,1)
unique_count <- length(unique(V))
print(unique_count)  # 输出:5

C++ 实现

方法1:哈希集合去重

利用std::unordered_set快速去重,时间复杂度接近O(n):

#include <iostream>
#include <unordered_set>
#include <vector>

int main() {
    std::vector<int> V = {0,5,1,8,9,1,1};
    std::unordered_set<int> unique_set(V.begin(), V.end());
    std::cout << unique_set.size() << std::endl;  // 输出:5
    return 0;
}

方法2:排序后遍历统计(低内存)

若内存受限,可先排序再遍历统计不同元素,无需额外哈希内存:

#include <iostream>
#include <vector>
#include <algorithm>

int count_unique(std::vector<int>& vec) {
    if (vec.empty()) return 0;
    std::sort(vec.begin(), vec.end());
    int count = 1;
    for (size_t i = 1; i < vec.size(); ++i) {
        if (vec[i] != vec[i-1]) count++;
    }
    return count;
}

int main() {
    std::vector<int> V = {0,5,1,8,9,1,1};
    std::cout << count_unique(V) << std::endl;  // 输出:5
    return 0;
}

核心思路总结:无需提前知晓向量元素,通过哈希结构记录已出现元素或排序后遍历统计两种方式,即可高效完成唯一元素计数,完美规避count函数的局限性。

内容的提问来源于stack exchange,提问作者Ikaro andrade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:50:33