[Swift Weekly Contest 112]LeetCode946. 验证栈序列 | Validate
发布时间:2020-12-14 05:09:42 所属栏目:百科 来源:网络整理
导读:Given two sequences? pushed ?and? popped ?with distinct values,?return? true ?if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack. ?Example 1: Input: pushed = [1,2,3,4,5],popp
Given two sequences? ?Example 1: Input: pushed = [1,2,3,4,5],popped = [4,5,1] Output: true Explanation: We might do the following sequence: push(1),push(2),push(3),push(4),pop() -> 4,push(5),pop() -> 5,pop() -> 3,pop() -> 2,pop() -> 1
Example 2: Input: pushed = [1,popped = [4,1,2] Output: false Explanation: 1 cannot be popped before 2.
?Note:
给定? 示例 1: 输入:pushed = [1,popped = [4,1] 输出:true 解释:我们可以按以下顺序执行: push(1),pop() -> 1 示例 2: 输入:pushed = [1,2] 输出:false 解释:1 不能在 2 之前弹出。 ?提示:
72ms 1 class Solution { 2 func validateStackSequences(_ pushed: [Int],_ popped: [Int]) -> Bool { 3 var s:Stack<Int> = Stack<Int>() 4 var j:Int = 0 5 for i in 0..<pushed.count 6 { 7 s.push(pushed[i]) 8 while (!s.isEmpty() && j < popped.count && s.getLast() == popped[j]) 9 { 10 s.pop() 11 j += 1 12 } 13 } 14 return s.isEmpty() && j == popped.count 15 } 16 } 17 18 public struct Stack<T> { 19 20 // 泛型数组:用于存储数据元素 21 fileprivate var stack: [T] 22 23 // 返回堆栈中元素的个数 24 public var count: Int { 25 return stack.count 26 } 27 28 /// 构造函数:创建一个空的堆栈 29 public init() { 30 stack = [T]() 31 } 32 33 // 检查堆栈是否为空 34 // - returns: 如果堆栈为空,则返回true,否则返回false 35 public func isEmpty() -> Bool { 36 return stack.isEmpty 37 } 38 39 // 入堆栈操作:将元素添加到堆栈的末尾 40 public mutating func push(_ element: T) { 41 stack.append(element) 42 } 43 44 // 出堆栈操作:删除并返回堆栈中的第一个元素 45 public mutating func pop() -> T? { 46 return stack.removeLast() 47 } 48 49 // 返回堆栈中的第一个元素(不删除) 50 public func getLast() -> T? { 51 return stack.last! 52 } 53 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |