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

《零基础Go语言算法实战》【题目 4-3】请用 Go 语言编写一个验证栈序列是否为空的算法

《零基础Go语言算法实战》

【题目 4-3】请用 Go 语言编写一个验证栈序列是否为空的算法

给定两个具有不同值的 push 和 pop 数组序列,当且仅当这可能是对最初为空的栈的一系

列 push 和 pop 操作的结果时才返回 true。

【解答】

① 思路。

这是考查栈操作的题目,按照 push 数组的顺序先把元素压入栈,然后再依次在 pop 里面

找出栈顶元素,找到了就出栈 pop,直到遍历完 pop 数组,最终如果遍历完了 pop 数组,则

代表清空了整个栈。

② Go 语言实现。

package main

import "fmt"

func validateStack(pushed []int, popped []int) bool {

 stack, j, N := []int{}, 0, len(pushed)

 for _, x := range pushed {

 stack = append(stack, x)

 for len(stack) != 0 && j < N && stack[len(stack)-1] == popped[j] {

 stack = stack[0 : len(stack)-1]

 j++

 }

 }

 return j == N

}

func main() {

 arr1 := []int{1, 6, 8}

 arr2 := []int{1, 6, 8}

 ret := validateStack(arr1, arr2)

 fmt.Println(ret)

}

//$ go run interview4-3.go 

//true

 

 


http://www.kler.cn/a/506918.html

相关文章:

  • Mysql--实战篇--大数据量表的分页优化(自增长主键,子查询主键主查询全部,查询条件加索引,覆盖索引等)
  • 【React】静态组件动态组件
  • 单片机存储器和C程序编译过程
  • 基于华为云车牌识别服务设计的停车场计费系统【华为开发者空间-鸿蒙】
  • 下载文件,浏览器阻止不安全下载
  • 漫话架构师|什么是系统架构设计师(开篇)
  • Linux(CentOS/CTyunOS)缺少GBK、GB2312中文字符集
  • 【设计模式-结构型】代理模式
  • RK3568笔记七十四:AP配网实现
  • VLAN是什么?有什么作用?
  • 高效构建与部署Python Web应用:FastAPI的测试与持续集成
  • 基于单片机的智能输液系统
  • C#中委托和函数类的关系
  • 11-2.Android 项目结构 - themes.xml 文件基础解读
  • 微信小程序web-view 外链白屏, 分享后白屏?
  • 解决关于Xcode16提交审核报错
  • 11-3.Android 项目结构 - 认识 .idea 目录
  • 如何在QT中保证线程是安全的?
  • 多包单仓库(monorepo)实现形式
  • 代码随想录算法【Day22】
  • 零基础入门uniapp Vue3组合式API版本
  • uniApp开通uniPush1.0个推,SpringBoot集成uniPush1.0个推
  • SDL2:PC端编译使用
  • dockerfile1.0
  • 【使用EasyExcel快速实现数据下载到Excel功能】
  • Vue进阶之Vue3后台系统