栈:它是一个内存数组,是一个先进后出的数据结构!
栈(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了。