c#栈基础知识(leetcode)

栈数据结构详解与应用
本文深入解析栈数据结构的基本概念,包括pop、push、peek等核心操作,并通过LeetCode题目示例,如682、496、150、503等,详细阐述栈在解决实际问题中的应用技巧。

 

栈:它是一个内存数组,是一个先进后出的数据结构!

栈(Stack)
            //pop是把栈顶的元素弹出(取出),并将其删除

Pop :弹出栈顶元素并删除

push :压入栈顶元素


            //peek是把栈顶元素弹出(取出),但不删除

peek:弹出栈顶元素不删除

ToArray:方法创建数组并将堆栈元素复制到其中

Contains:方法判断一个元素是否在栈中

//ToArray从栈底到栈顶将一个栈复制到另一个栈中

   Stack<string> staB = new Stack<string>(staA.ToArray());

具体代码:(leetcode 682

创建一个栈

 var stack = new Stack<int>();

如果一个栈满了(int数组值),现在想输出相加结果

 

            while (stack.Any())

            {

                res += stack.Pop();

            }

拿到栈的上面第二个值

var per = stack.Pop();

                        var prepre = stack.Peek();

                        stack.Push(per);

具体知识:(leetcode 496

倒叙入栈,然后拿要对比的依次进行比较,找到后面第一个大于的即可。

这道题在纸上画一下更好理解

创建要返回的数组:int[] res = new int[findNums.Length];

具体知识:(leetcode 150 逆波兰表达式求值

这道题按照栈的思想将数组进行压栈 ,实例完全好理解。

思路:

如果遇到符号就把前两个要操作的值拿出来计算,删除两个值把计算后的结果放入栈中。

如果不是符号,那么就直接push进栈。

最后返回栈顶return stk.Peek();

具体知识:(leetcode 503  下一个更大元素II

既然是循环,那么我的第一想法是循环加入栈两次,如果两次都没有就是-1了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值