剑指offer系列18---顺时针打印矩阵
【题目】定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求时间复杂度是O(1)。push pop min
【思路】设计一个辅助栈,当新加入的原数据栈中的数小于辅助栈顶的数时就加入该数,大于就继续加入辅助栈顶的数。这样想取出最小数就直接取出辅助栈栈顶的数就可以。
package com.exe4.offer; import java.util.Stack; /**
* 18【题目】定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求时间复杂度是O(1)。
* @author WGS
*
*/
public class MinInStack { Stack<Integer> dataStack=new Stack<Integer>();//数据栈
Stack<Integer> assisstStack=new Stack<Integer>();//辅助栈 //压入操作 保证最小的数放在栈顶,所以原数据栈压入一个数时,辅助栈要比较该数与上个数的大小,》则仍压入上个数
//小,则压入该数
public void push(int node){
dataStack.push(node);
if(assisstStack.size()==0 || node<assisstStack.peek()){//新压入的数node小,就压入node
assisstStack.push(node);
}else{
assisstStack.push(assisstStack.peek());//否则压入assisstStack中最小的数
}
} public void pop(){
if(dataStack.size()>0 && assisstStack.size()>0){
dataStack.pop();
assisstStack.pop();
}
}
//元数据栈顶值
public int top(){
if(dataStack.size()>0){
return dataStack.peek();
}
return -1;
}
//辅助栈中最小值
public int min(){
if(dataStack.size()>0 && assisstStack.size()>0){
return assisstStack.peek();
}
return -1; }
public static void main(String[] args) {
MinInStack minStack=new MinInStack();
minStack.push(1);
//minStack.pop();
minStack.push(4);
minStack.push(2);
minStack.push(11); System.out.println(minStack.min());//1 辅助栈中最小值
System.out.println(minStack.top());//11 元数据栈中栈顶值 } }
剑指offer系列18---顺时针打印矩阵的更多相关文章
- 剑指offer系列17---顺时针打印矩阵(不是很懂)
package com.exe4.offer; import java.util.ArrayList; /** * 17[题目]输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果 ...
- 剑指offer 20:顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
- 剑指offer系列33-----把二叉树打印成多行
[题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 方法一:直接打印 package com.exe7.offer; import java.util.LinkedList; i ...
- 剑指offer-面试题20.顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如: 输入一个矩阵如下: 则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 这道题的 ...
- 干货 | 剑指offer系列文章汇总
下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现 剑指offer系列 始 剑指offer—灯管问题(1) 剑指offer—10人电梯(2) ...
- 剑指Offer - 九度1515 - 打印1到最大的N位数
剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...
- 【剑指Offer】把二叉树打印成多行 解题报告(Python)
[剑指Offer]把二叉树打印成多行 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- Go语言实现:【剑指offer】把二叉树打印成多行
该题目来源于牛客网<剑指offer>专题. 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 需要分层,二维数组. Go语言实现: /** * Definition for ...
- 剑指Offer系列之题16~题20
目录 16.反转链表 17.合并两个排序的链表 18.树的子结构
随机推荐
- PostgresSQL 学习资料记录处
PostgresSQL 学习资料记录处 博客:http://francs3.blog.163.com PostgreSQL9.4 中文手册:http://www.postgres.cn/docs/9 ...
- allpaths 使用
软件下载与说明:http://www.broadinstitute.org/software/allpaths-lg/blog/?page_id=12 原始数据的深度要达到100以上. 至少要两个库, ...
- unable to open sync connection
有些时候,在你向连接好的Android机器中按照程序时会遭遇失败,logcat提示“unable to open sync connection”. 一般情况下,重启手机几乎肯定可以解决这个问题. 如 ...
- UIImage加载图片的两种方法区别
Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路 ...
- linux死锁检测的一种思路
前言: 上一篇博文讲述了pstack的使用和原理. 和jstack一样, pstack能获取进程的线程堆栈快照, 方便检验和性能评估. 但jstack功能更加的强大, 它能对潜在的死锁予以提示, 而p ...
- poj 3468 线段树区间更新/查询
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- js刷新当前页面
a href="javascript:window.location.href=location.href"
- leetcode 130. Surrounded Regions----- java
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- URAL 1076 Trash Trash(最大权匹配)
Trash Time limit: 1.0 secondMemory limit: 64 MB You were just hired as CEO of the local junkyard.One ...
- POJ-2528 Mayor's posters (线段树区间更新+离散化)
题目分析:线段树区间更新+离散化 代码如下: # include<iostream> # include<cstdio> # include<queue> # in ...