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

如何仅用栈基础操作实现Stack<int>实例重复元素判断(无需额外函数的简化方案)

检查Stack中是否存在重复元素的优化实现(仅用栈基础操作)

针对你提出的需求——仅使用栈的基础方法判断Stack<int>是否存在重复元素,我整理了一个简洁的实现方案,全程只依赖Pop()、Push()、Peek()(对应需求中的Top())和空栈判断,没有使用任何C#内置的集合操作函数,也没有额外的辅助函数:

public static bool CheckStack(Stack<int> stack)
{
    // 空栈直接返回true
    if (stack.Count == 0)
        return true;

    int originalCount = stack.Count;
    for (int i = 0; i < originalCount; i++)
    {
        int current = stack.Pop();
        bool hasDuplicate = false;
        int tempCount = stack.Count;

        // 遍历剩余元素对比
        for (int j = 0; j < tempCount; j++)
        {
            int temp = stack.Pop();
            if (temp == current)
            {
                hasDuplicate = true;
            }
            // 把临时弹出的元素放回栈
            stack.Push(temp);
        }

        if (hasDuplicate)
        {
            // 把当前元素放回栈,恢复栈结构
            stack.Push(current);
            return false;
        }
        // 把当前元素放回栈
        stack.Push(current);
    }

    return true;
}

实现细节说明:

  • 栈结构完整性:每次检查完一个元素后,都会把弹出的所有元素放回原栈,确保栈的原始结构不会被破坏(哪怕提前发现重复返回false,也会恢复当前弹出的元素)。
  • 严格遵循基础操作:整个过程只用到了栈的Pop()、Push(),通过stack.Count判断空栈状态,完全没有使用内置的搜索、遍历类函数,贴合需求要求。
  • 高效终止逻辑:一旦发现任意两个元素相等,立即返回false;遍历完所有元素都没有重复,则返回true,避免不必要的计算。
  • 空栈特殊处理:开头直接判断空栈场景,符合需求中“空栈返回true”的规则。

这个实现不需要额外的辅助栈或集合,只用局部变量存储临时值,是最贴合需求的简洁方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:58:09