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

不使用便捷函数 用伪代码实现数组去重复制并将0值后置

缺失的核心逻辑点
  • B数组未使用独立写入指针:你当前直接复用原数组的下标i给B数组赋值,遇到重复元素跳过赋值时,B数组对应的i位置会保留初始的0值,导致非0的有效元素中间插入0,无法连续排列在数组头部。
  • 边界判断缺失:遍历从i=0开始时,i-1会访问到数组最后一位,虽然当前测试用例未触发异常,但逻辑本身存在漏洞,会对首元素判断造成干扰。
符合要求的实现(无内置便捷函数调用)

伪代码

// 输入:已按自然顺序排序的原数组A,长度为length
// 输出:去重完成、0值后置的目标数组B,长度为length
初始化B数组,长度等于A的长度,所有元素默认赋值为0
初始化B数组的写入位置指针 pos = 0
循环变量i从0遍历到length-1:
    如果i == 0:
        B[pos] = A[i]
        pos = pos + 1
    否则如果A[i] != A[i-1]:
        B[pos] = A[i]
        pos = pos + 1
结束循环
// B数组pos之后的位置已经是初始值0,无需额外处理
返回B数组

修正后的Python验证代码

A = [1, 2, 3, 4, 4, 5, 5, 5, 6, 7, 8, 9]
arr_length = len(A)
B = [0 for _ in range(arr_length)]
write_pos = 0

for i in range(arr_length):
    if i == 0:
        B[write_pos] = A[i]
        write_pos += 1
    elif A[i] != A[i-1]:
        B[write_pos] = A[i]
        write_pos += 1

print(B)

运行输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:03