PAT-Stack (30)
来源:互联网 发布:销售团队励志视频知乎 编辑:程序博客网 时间:2024/06/06 19:47
题目:
模拟栈的活动,还要找出中位数。
解答:
1、使用一个真正的栈
2、为了模拟空栈的行为需要定义size
3、为了计算出中位数,定义了数组
中位数可以定义一个全为0的数组,出现过的数,将其当做坐标,并且记录出现的次数,则在找中位数的时候就是找中间那个数,也就是(size+1)/2的数,这是此题的巧妙之处
具体的java代码为:
import java.util.*;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); Stack<Integer> stack=new Stack(); ArrayList list=new ArrayList(); int size=0; int[] count=new int[5000]; for(int i=0;i<n;i++){ String command=in.next(); if(command.equals("Push")){ int num=in.nextInt(); stack.add(num); size++; count[num]++; } else if(command.equals("Pop")){ if(size==0) list.add("Invalid"); else{ int m=stack.pop(); size--; count[m]--; list.add(m); } } else{ if(size==0) { list.add("Invalid"); } else{ int p=getMid(count,(size+1)/2); list.add(p); } } } for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } } public static int getMid(int[] count,int mid){ int sum=0; for(int i=0;i<count.length;i++){ sum+=count[i]; if(sum>=mid){ return i; } } return 0; }}
0 0
- PAT 1057 Stack (30)
- 1057. Stack (30)-PAT
- pat 1057. Stack (30)
- PAT 1057. Stack (30)
- 【PAT】1057. Stack (30)
- PAT-Stack (30)
- PAT 1017Stack (30)
- PAT Stack (30)
- PAT A1057. Stack (30)
- PAT 1057. Stack (30)
- PAT A 1057. Stack (30)
- PAT (Advanced) 1057. Stack (30)
- PAT(A) - 1057. Stack (30)
- 【PAT甲级】1057. Stack (30)
- PAT(A) - 1057. Stack (30)
- PAT甲级1057. Stack (30)
- PAT-A-1057. Stack (30)
- PAT 甲级 1057. Stack (30)
- js正则表达式语法
- JVM内存回收与分配
- 回调函数
- 第一行代码复读收获(一)
- 数据存储之文件存储
- PAT-Stack (30)
- CouchBase简单介绍
- 2016蓝桥杯假期任务之《连号区间数》
- IOS 知识大总结
- 表单美化css
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- 将android的adb命令工具作用于mac全局
- [leetcode 255] Verify Preorder Sequence in Binary Search Tree ---先序遍历验证二叉搜索树
- Fragment之底层关键操作函数moveToState