当前位置: 首页 > news >正文

广州市官网网站建设哪家好北京出名的室内设计公司

广州市官网网站建设哪家好,北京出名的室内设计公司,商会 网站模板,wordpress防护屏蔽国外ip【问题描述】[中等] 输入两个整数序列#xff0c;第一个序列表示栈的压入顺序#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹…【问题描述】[中等] 输入两个整数序列第一个序列表示栈的压入顺序请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 {1,2,3,4,5} 是某栈的压栈序列序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1输入pushed [1,2,3,4,5], popped [4,5,3,2,1] 输出true 解释我们可以按以下顺序执行 push(1), push(2), push(3), push(4), pop() - 4, push(5), pop() - 5, pop() - 3, pop() - 2, pop() - 1 示例 2输入pushed [1,2,3,4,5], popped [4,3,5,1,2] 输出false 解释1 不能在 2 之前弹出。提示0 pushed.length popped.length 1000 0 pushed[i], popped[i] 1000 pushed 是 popped 的排列。 【解答思路】 栈 时间复杂度O(N) 空间复杂度O(N) class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {StackInteger stack new Stack();//入栈数组的指针必须维护才知道此时应该是哪个数入栈int pushIndex 0;//遍历要出栈的数组,如果可以全部出栈成功那么返回TRUEfor (int poppedIndex 0; poppedIndex popped.length; poppedIndex) {//这个条件很关键当 还有数可以入栈 (栈为空那么直接入栈或者栈顶元素与要弹出的数不一样那么继续入栈)while (pushIndex pushed.length (stack.empty() || stack.peek() ! popped[poppedIndex]))stack.push(pushed[pushIndex]);//能走到这里要么没有数可以继续入栈了要么此时的栈顶元素和要弹出的数一致//如果栈顶元素和要弹出的数不一致那么直接返回FALSE因为正如上面所说能走到这里还可能是因为没有数可以继续入栈了if (stack.peek() ! popped[poppedIndex])return false;//如果一致那么出栈elsestack.pop();}//走到这里说明全部出栈成功那么返回TRUEreturn true;} } 优化 class Solution {public boolean validateStackSequences(int[] pushed, int[] popped) {StackInteger stack new Stack();int i 0;for(int num : pushed) {stack.push(num); // num 入栈while(!stack.isEmpty() stack.peek() popped[i]) { // 循环判断与出栈stack.pop();i;}}return stack.isEmpty();} } 使用 Deque 双端队列来代替 Stack public boolean validateStackSequences(int[] pushed, int[] popped) {DequeInteger stack new LinkedList();int idx 0;for (int num : pushed) {stack.offerFirst(num);while (!stack.isEmpty() stack.peekFirst() popped[idx]) {stack.pollFirst();idx;}}return stack.isEmpty();}【总结】 1.边界问题 注意越界 栈 先入先出 边入边出思想 辅助栈思想 2. 使用 Deque 双端队列来代替 Stack 基于 Vector 实现的栈 Stack底层是数组 扩容开销大 Java并不推荐使用java.util.stack来进行栈的操作而是推荐使用一个双端队列deque 详情链接https://www.cnblogs.com/cosmos-wong/p/11845934.html 3.Stack 的常用方法 push( num) 入栈 pop() 栈顶元素出栈 empty() 判定栈是否为空 peek() 获取栈顶元素 search(num) 判端元素num是否在栈中如果在返回1不在返回-1。 注意pop()和peek()的区别。pop()会弹出栈顶元素并返回栈顶的值peek()只是获取栈顶的值但是并不会把元素从栈顶弹出来 4.Queue Queue是在两端出入的List所以也可以用数组或链表来实现。 add 增加一个元索 如果队列已满则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如果队列为空则抛出一个NoSuchElementException异常element 返回队列头部的元素 如果队列为空则抛出一个NoSuchElementException异常offer 添加一个元素并返回true 如果队列已满则返回falsepoll 移除并返问队列头部的元素 如果队列为空则返回nullpeek 返回队列头部的元素 如果队列为空则返回nullput 添加一个元素 如果队列满则阻塞take 移除并返回队列头部的元素 如果队列为空则阻塞 注意 remove、element、offer 、poll、peek 其实是属于Queue接口。 add remove element操作在队满或者队空的时候会报异常。 offer poll peek 在队满或者队空的时候不会报异常。 put take操作属于阻塞操作。队满队空均会阻塞。 5.LinkedList 以双向链表实现的LinkedList既是List也是Queue。它是唯一一个允许放入null的Queue。 转载链接https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/solution/mian-shi-ti-31-zhan-de-ya-ru-dan-chu-xu-lie-mo-n-2/ 参考链接https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/solution/javazhan-shi-xian-yi-ji-zhi-zhen-mo-ni-zhan-liang-/
http://www.yutouwan.com/news/243302/

相关文章:

  • 珠海自适应网站建设WordPress主题开发核心知识
  • 先做网站再付款wordpress入门
  • 营销型网站建设 价格网站开发收获
  • 做物流网站多少钱明星百度指数排名
  • 视频优化是什么意思优化外包哪里好
  • 私人为别人做网站违法问题麻花星空影视传媒制作公司网站
  • 商城型网站的概念如何选择合肥网络公司
  • 知名的家居行业网站开发vi形象设计包括什么
  • 高端品牌网站建设有哪些网站优化千牛帮
  • 如果建设一个网站wordpress增加付费阅读
  • wordpress如何看主题wordpress可以做seo吗
  • 官方网站下载穿越火线wordpress怎样用
  • wordpress 数字指纹百度快照seo
  • 建网站公司公司名称大全网站网络营销推广商城
  • 网站 如何做 同时在线网站的常用技术有哪些
  • 网站页面架构成都官网优化推广
  • 青岛网站建设新元创想手机版做我女朋友网站
  • 网站建设也笔试做设计兼职的网站有哪些工作
  • 网站后台版权网站设计ps做效果图过程
  • 律师事务所网站制作wordpress 淘宝客app
  • 瑞安联科网站建设wifi和卫星有关系吗
  • 淮南市建设工程质量监督中心网站呼和浩特网站seo优化方案
  • 网站开发的过程广州海珠区景点
  • 网站关键词优化排名怎么做青岛网站建设定制开发
  • 建设网站要多少页面如何免费推广自己的产品
  • 网站建设预算知乎wordpress自动添加标签页
  • 临沂网站建设培训学校山东建设银行招聘网站
  • 写着网站建设图片_x wordpress
  • 网站专题页面案例永久免费已备案二级域名注册
  • 南高齿网站是谁做的宣传文案模板