peek

栈的括号匹配问题,迷宫求解问题 以及队列求杨辉三角,栈与队列判断是否为回文字符串

自闭症网瘾萝莉.ら 提交于 2020-02-01 01:24:00
思路:依次遍历字符串中的每个字符,如果是左括号,就入栈, 如果是右括号 如果栈为空,返回false 如果栈不为空,则和栈顶元素匹配 如果不匹配,返回false 如果匹配,弹出栈顶元素 最后判断栈是否为空,为空返回true,不为空,返回false public bool isMacth(string content) { Stack stack = new Stack(); for (int i = 0; i < content.Length; i++) { switch (content[i]) { case '(': stack.Push(content[i]); break; case '[': stack.Push(content[i]); break; case '{': stack.Push(content[i]); break; case ')': if (stack.Count == 0) return false; if ((char)stack.Peek() == '(') stack.Pop(); break; case ']': if (stack.Count == 0) return false; if ((char)stack.Peek() == '[') stack.Pop(); break; case '}': if (stack.Count == 0

java8 stream.peek()方法,Consumer的使用

☆樱花仙子☆ 提交于 2020-01-29 00:51:54
Consumer接口的方法为accept(),返回void。可以理解为accept参数并执行一定的逻辑。 peek方法是中间操作,如果不触发终止操作,他不会执行任何处理。 java中经常要用到判断和赋值(或者输出等操作),Predicate和Consumer就可以很好的解决这个问题。 可以定义多个不同consumer,通过andThen来串联起来,实现不同的逻辑,实现代码的复用。 @Data public class Person { private String name ; public static void main ( String [ ] args ) { Person person = new Person ( ) ; person . setName ( "zhangsan" ) ; Consumer < Person > consumer = ( s ) - > { s . setName ( "lisi" ) ; System . out . println ( s . getName ( ) ) ; } ; Consumer < Person > consumer2 = ( s ) - > { System . out . println ( s . getName ( ) ) ; } ; //这说明consumer可以修改传入对象的内部值,以便于后续继续操作

结对编程

一曲冷凌霜 提交于 2020-01-28 00:33:25
学号1:211606367 姓名:林恩 学号2:211606445 姓名:肖志豪 一、预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 • Estimate • 估计这个任务需要多少时间 30 30 Development 开发 600 560 • Analysis • 需求分析 (包括学习新技术) 70 50 • Design Spec • 生成设计文档 50 70 • Design Review • 设计复审 20 30 • Coding Standard • 代码规范 (为目前的开发制定合适的规范) 30 20 • Design • 具体设计 185 185 • Coding • 具体编码 185 185 • Code Review • 代码复审 30 30 • Test • 测试(自我测试,修改代码,提交修改) 30 30 Reporting 报告 60 50 • Test Repor • 测试报告 30 30 • Size Measurement • 计算工作量 10 10 • Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 10 20 合计 690 640 二、需求分析 我通过百度的方式了解到

【力扣】232. 用栈实现队列

自闭症网瘾萝莉.ら 提交于 2020-01-27 22:11:08
题目 :使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false 说明: 你只能使用标准的栈操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)。 class MyQueue { private Stack < Integer > a , b , temp ; /** Initialize your data structure here. */ public MyQueue ( ) { a = new Stack < > ( ) ; b = new Stack < > ( ) ; temp

Java实现最小栈

眉间皱痕 提交于 2020-01-18 01:27:43
一、前言   最近依旧在刷 《剑指offer》 的题目,然后今天写到了一道蛮有意思的题目,叫做 包含min函数的栈 ,解题思路有点妙,写篇博客记录一下。 二、描述   这道题目的描述是: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)) 。   然后这题给出的原始代码如下,具体方法代码需要自己补充: import java.util.Stack; public class Solution { public void push(int node) { } public void pop() { } public int top() { } public int min() { } } 三、思路   看到这题,大多数人的第一反应应该就是:在类中声明一个变量 minVal ,记录当前栈中的最小值,然后在调用 min 方法时将这个最小值返回。但是仔细想一想,会发现这种办法是不可行的,因为如果执行了 pop 操作,将最小值出栈了,那我们怎么知道,剩下的元素中最小的是哪个,如何找到它从而去更新变量 minVal 呢?或许你认为可以在最小值出栈后,遍历剩下的元素,重新找出新的最小值。这样确实可以,相比于每次调用 min 都遍历一遍找最小值这种最笨的方法要好一些,但是别忘了,题目要求我们这个算法的时间复杂度是 O(1) ,而且在面试中

第三章:javascript: 列表

人盡茶涼 提交于 2020-01-14 08:38:43
列表是一种最自然的数据组织方式。上一章已经介绍如何使用List类将数据组织成一个列表。 如果数据存储的顺序不重要。也不必对数据进行查找,那么列表就是一种再好不过的数据结构 。对于其它的一些应用,列表就显得有些简陋了。我们需要某种和列表类似但更复杂的数据结构。 栈就是和列表类似的一种数据结构,它可以用来解决计算机世界里很多的问题。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现。栈的使用遍布程序语言的方方面面,从表达式求值到处理函数调用 。 一:对栈的操作 栈是一种特殊列表,栈内的元素只能通过列表的一端访问,这一端被称为栈顶。咖啡厅的一摞盘子是现实世界中最常见的栈的例子。只能从上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。 栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构 。 由于栈具有后入先出的特点,所有任何不在栈顶的元素都无法访问 ,为了拿到栈底的元素,必选先拿掉上面的元素。如图: 对于栈的两种主要操作 是将一个元素压入栈和将一个元素弹出栈,入栈使用push()方法。出栈使用pop()方法。 另外一个常用操作是预览栈顶的元素 。pop()方法虽然可以访问栈顶的元素,但是调用该方法后,栈顶的元素也从栈中永久的删除了。 peek()方法 则只返回栈顶元素,而不删除它。 为了记录栈顶元素的位置

Java8 Stream中 peek、map、foreach区别

冷暖自知 提交于 2020-01-13 05:15:07
一、前言 在 前面一篇 文章中以Demo的形式介绍了Stream的API使用,其中peek和map看起来很像,这里再详细介绍一下。 二、管道流 一个流式也就是一条管道,操作分为三步 数据准备 一步和多步中间操作,所有的操作都是懒操作,不会对数据产生影响 终止操作,数据输出 三、 peek、map区别 peek入参是Consumer,没有返回值 * * @param action a <a href="package-summary.html#NonInterference"> * non-interfering</a> action to perform on the elements as * they are consumed from the stream * @return the new stream */ Stream<T> peek(Consumer<? super T> action); map入参是Function,是需要返回值的 * * @param <R> The element type of the new stream * @param mapper a <a href="package-summary.html#NonInterference">non-interfering</a>, * <a href="package-summary.html

Python: How to peek into a pty object to avoid blocking?

爷,独闯天下 提交于 2020-01-10 15:33:01
问题 I am using pty to read non blocking the stdout of a process like this: import os import pty import subprocess master, slave = pty.openpty() p = subprocess.Popen(cmd, stdout = slave) stdout = os.fdopen(master) while True: if p.poll() != None: break print stdout.readline() stdout.close() Everything works fine except that the while-loop occasionally blocks. This is due to the fact that the line print stdout.readline() is waiting for something to be read from stdout . But if the program already

Python: How to peek into a pty object to avoid blocking?

我只是一个虾纸丫 提交于 2020-01-10 15:32:25
问题 I am using pty to read non blocking the stdout of a process like this: import os import pty import subprocess master, slave = pty.openpty() p = subprocess.Popen(cmd, stdout = slave) stdout = os.fdopen(master) while True: if p.poll() != None: break print stdout.readline() stdout.close() Everything works fine except that the while-loop occasionally blocks. This is due to the fact that the line print stdout.readline() is waiting for something to be read from stdout . But if the program already

Java队列(Queue)了解及使用

一曲冷凌霜 提交于 2020-01-09 03:57:30
1.什么是队列? 队列是数据结构中比较重要的一种类型(是一种数据结构),它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。 2.什么情况下使用队列? 一般情况下,如果是对一些及时消息的处理,并且处理时间很短的情况下是不需要队列的,直接阻塞式的方法调用就可以了。但是如果在消息处理的时候特别费时间,这个时候如果有新消息来了,就只能处于阻塞状态,造成用户等待。这个时候便需要引入队列了。当接收到消息后,先把消息房贷队列中,然后再用行的线程进行处理,这个时候就不会有消息阻塞了。 3.队列介绍: 队列有两种: ① 单队列 : 就是常见的队列,每次添加元素时,都是添加对队尾。 ② 循环队列(暂不介绍) 4.队列Queue add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常   remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常   element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常   offer 添加一个元素并返回true 如果队列已满,则返回false   poll 移除并返问队列头部的元素 如果队列为空,则返回null   peek 返回队列头部的元素 如果队列为空,则返回null   put