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

如何从数组中删除非重复数字 基于现有去重伪代码实现

伪代码修改方案

核心思路

你原来的逻辑是遇到重复元素就删除多余副本,最终每个元素仅保留1份。现在要保留出现次数≥2的元素(每个符合要求的元素最终也仅保留1份,匹配你给出的示例输出),可以分两步实现:

  1. 先统计数组中每个元素的总出现次数
  2. 遍历数组,仅保留出现次数≥2的元素,同时删除同一元素的多余副本

修改后的伪代码

// k为原数组的长度
// 初始化计数数组,cnt[i]表示arr[i]对应元素的全局出现次数
cnt <-- 长度为k的数组,所有元素初始值为0
j <-- 0

// 第一步:统计每个元素的总出现次数
for i <-- 0 to i < k do
    for j <-- 0 to j < k do
        if arr[i] = arr[j] then
            cnt[i] <-- cnt[i] + 1
        endif
    endfor
endfor

// 第二步:过滤仅出现1次的元素,同时对符合要求的元素去重
res_idx <-- 0 // 结果数组的写入位置指针
for i <-- 0 to i < k do
    // 仅处理出现次数≥2的元素
    if cnt[i] >= 2 then
        // 检查该元素是否已经加入结果,避免重复存储
        is_exist <-- false
        for j <-- 0 to j < res_idx do
            if arr[i] = arr[j] then
                is_exist <-- true
                break
            endif
        endfor
        if not is_exist then
            arr[res_idx] <-- arr[i]
            res_idx <-- res_idx + 1
        endif
    endif
endfor

k <-- res_idx // 更新数组有效长度
return arr[0..k-1]

逻辑补充说明

如果你需要保留所有重复元素的完整副本(比如示例输入输出为{1,1,1,0,0}),只需要删除第二步中检查元素是否已存在的判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:27:04