Java实现检验一串数字的出栈合法性
题目描述:


解题思路:
判断出栈合法性的关键在于,对于每一个数,在它后面出栈且比它小的数,必是以降序排列的。
比如说3 4 2 1 5这一组数,对于第一个数 3 来说,后面比它小的数有 1、2,而在4 2 1 5这段子序列中,1、2是以降序 2 1排列的,所以3 2 1这个出栈顺序是合法的;
对于第二个数 4 来说, 后面比它小的数有 1、2,在 2 1 5 这段子序列中,同样是以降序 2 1来排列的,所以 4 2 1 这个出栈顺序是合法的;依次类推, 3 4 2 1 5这段出栈序列是合法的。
代码实现:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()) {
int temp = 0,j,k;
boolean flag1,flag2,flag3 = false;
int n=scanner.nextInt();
if(n==0)
break;
int[] a=new int[n];
for(int i=0;i<n;i++)
a[i]=scanner.nextInt();
for(int i=0;i<n;i++) {
flag1=false;
flag2=false;
for(j=i+1;j<n;j++) {
if(a[j]<a[i]) {
temp=a[j];
flag1=true;
break;
}
}
if(flag1) {
for(k=j+1;k<n;k++) {
if(a[k]<a[i]) {
if(a[k]<temp) {
temp=a[k];
}
else {
flag2=true;
}
}
}
if(flag2) {
flag3=true;
break;
}
}
}
if(flag3)
System.out.println("No");
else
System.out.println("Yes");
}
}
}
Java实现检验一串数字的出栈合法性的更多相关文章
- 出栈顺序 与 卡特兰数(Catalan)的关系
一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...
- pat--7-11 出栈序列的合法性(25 分)
7-11 出栈序列的合法性(25 分) 给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5 ...
- 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字(python)(原创)
背景: 电话面试&手撕代码 2019.03.22 Mufasa 问题: 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字 条件: 这串数字是有序数 解决方法: 核心代码只有 ...
- 关于如何用sql语句查询出连续的一串数字
在数据库操作中,经常有一些这样的操作:插入诺干条测试数据.查询这个月的登录情况(没有登录的日期不能不存在,要显示数量为0),获取诺干条guid. 这些的基础都是怎么生成连续的一串数字 1 2 3 ...
- 美女程序员是如何将QQ转换成题目中那串数字的--读博文《找女神要QQ号码》
我只能说好好的端午节你们不约么?,还在这里写代码?我也是够无聊的,下班了不走也在这跟风写着玩!<找女生要QQ号码原文>原文链接http://www.cnblogs.com/iforever ...
- Java基于opencv实现图像数字识别(四)—图像降噪
Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...
- 把一串数字表示成千位分隔形式——JS正则表达式的应用
梳理思路 要先明白的是,我们将要转换成的数字格式是这样:从个位往左数起,每三位前插入一个千位分隔符,,即可以想象成我们要把每三位数字前面的那个空""匹配出来,并替换成千位分隔符,. ...
- java对象与json串互转
1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...
- java 11-8 在大串中查找小串的案例
1.统计大串中小串出现的次数 举例: 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun& ...
随机推荐
- vuex——做简单的购物车功能
购物车组件 <template> <div> <h1>vuex-shopCart</h1> <div class="shop-listb ...
- 信息摘要算法之六:HKDF算法分析与实现
HKDF是一种特定的键衍生函数(KDF),即初始键控材料的功能,KDF从其中派生出一个或多个密码强大的密钥.在此我们想要描述的是基于HMAC的HKDF. 1.HKDF概述 密钥派生函数(KDF)是密码 ...
- 本文转自 MyEclipse 2015反编译插件安装
本文转自MyEclipse 2015反编译插件安装 分享一下下载插件的地址,百度网盘:链接:http://pan.baidu.com/s/1nturiAH 密码:yk73 其次:我来说下具体操作步骤: ...
- Confluence 6 配置手动备份
如果你希望关闭自动备份,你可以选择手动导出保存站点.请参考 Manually Backing Up the Site 页面中的内容获得更多的信息. 这些文件没有自动备份在同样的路径中,这些文件存储在 ...
- Java并发编程-并发工具类及线程池
JUC中提供了几个比较常用的并发工具类,比如CountDownLatch.CyclicBarrier.Semaphore. CountDownLatch: countdownlatch是一个同步工具类 ...
- 升级centos6.8内核
1.查看默认版本:uname -r 2.更新nss 3.安装elrepo的yum源,升级内核需要使用elrepo的yum源,在安装yum源之前还需要我们导入elrepo的key rpm --impor ...
- meter压力测试 设置一秒发送一次请求,一秒两次请求
使用jmeter进行压力测试 ,测试情况有 1.一秒钟投1次请求(一个线程) 持续30分钟的情况 2.一秒钟发送2次请求(两个线程) 持续30分钟的情况 下面说一下如何使用jmeter 测试这两种情 ...
- Nginx配置笔记
配置资源的缓存周期 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { root www; expires 3560d; } loca ...
- 获取访问IP
public static String GetIP() { String ip = HttpContext.Current.Request.ServerVariables["HTTP_X_ ...
- Java接口自动化测试之Maven项目的创建(一)
这里使用Idea创建Maven项目, 过程非常简单, 装好JDK和Idea 1. 安装完后,打开Idea, 选择File→New→Project, 如图 2. 选择maven, 点击Next, 如图 ...