《零基础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

相关推荐
碧海银沙音频科技研究院7 分钟前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet1 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
文心快码BaiduComate3 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
m0_629494734 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户4 小时前
用队列实现栈
数据结构·算法
做人求其滴4 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad7774 小时前
记一组无人机IMU传感器数据
算法
计算机安禾4 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法
小O的算法实验室4 小时前
2026年KBS,流形感知强化学习差分进化算法+不规则3D无人机路径规划,深度解析+性能实测
算法·智能算法·智能算法改进