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

如何实现数组拷贝并完全去重(不可使用SET类内置函数)

实现逻辑

要实现全量非连续去重,核心逻辑是每次往结果数组B中存入元素前,先检查当前元素是否已经在B的已填充有效区域存在,仅当不存在时才执行写入操作。

伪代码实现

// 定义变量
A: 待去重的原始数组,长度为n
B: 结果数组,初始长度和A一致,避免写入越界
b_length: 整数,初始值为0,记录B中已存入的有效元素个数

FOR 索引i 从0遍历到A的长度-1:
    定义布尔变量is_exist = false,标记当前A[i]是否已存在于B中
    // 遍历B的已有有效元素查重
    FOR 索引j 从0遍历到b_length-1:
        IF A[i] == B[j]:
            is_exist = true
            BREAK // 找到重复后直接跳出内层循环,减少无效遍历
    END FOR
    // 无重复则写入B
    IF is_exist == false:
        B[b_length] = A[i]
        b_length = b_length + 1
END FOR

// 最终B数组的前b_length个元素即为完全去重后的结果

对应Python可运行实现

适配你提供的测试用例,代码如下:

A = [1, 1, 1, 2, 2, 2, 3, 4, 5, 2, 2, 2, 7, 8, 8, 9]
# 初始化结果数组,长度和原始数组一致
B = [0 for _ in range(len(A))]
# 记录B中有效元素长度
b_length = 0

for i in range(len(A)):
    is_exist = False
    # 查重逻辑:检查当前元素是否已经存入B的有效区域
    for j in range(b_length):
        if A[i] == B[j]:
            is_exist = True
            break
    # 无重复则写入
    if not is_exist:
        B[b_length] = A[i]
        b_length += 1

# 输出去重后的有效部分
print(B[:b_length])

运行输出结果为:[1, 2, 3, 4, 5, 7, 8, 9],符合预期要求。

该实现不依赖任何内置去重、集合类函数,仅通过基础循环和比较逻辑完成,时间复杂度为O(n²),适合数据量不大的场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:04