白白白小白 2016-03-07 02:36 采纳率: 100%
浏览 1303

【JAVA算法】凑字数凑字数啦

题目是这样的

 第一行两个数,分别为n,m。
  第二行n个数,表示盾神一开始的项链。第i个数表示第i颗珠子的颜色。
  接下来m行,为以下形式之一:
  ADD P Q:表示在颜色为P的珠子前面加上一个颜色为Q的珠子。
  DEL P:表示把颜色为P的珠子去掉,如果它不在端点处,则需要把它旁边的两颗珠子连起来。例如某时刻项链状态为1 4 5 8,则执行DEL 4会变成1 5 8,执行DEL 1会变成4 5 8。
  输入保证在每次操作之前,项链有颜色为P的珠子,且任意时刻珠子颜色互不相同。
输出格式
  第一行为一个数len,为做完所有操作后,项链的长度。
  第二行len个数,表示此时项链的状态。第i个数表示第i颗珠子的颜色。
样例输入
10 5
1 2 3 4 5 6 7 8 9 10
DEL 5
ADD 7 5
DEL 10
ADD 4 20
ADD 20 12
样例输出
11

1 2 3 12 20 4 6 5 7 8 9

-------------------------代码-------------------------
public static void main(String[] args) {

ArrayList list = new ArrayList();
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
for (int i = 0; i < n; i++) {
list.add(scan.nextInt());
}
for (int i = 0; i < m; i++) {
String s = scan.next();
if (s.equals("ADD")) {
int a = scan.nextInt();
int b = scan.nextInt();
list.add(list.indexOf(a),b);
}
else{
int a = scan.nextInt();
int b = list.indexOf(a);
list.remove(b);
}
}
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}

}

用JAVA 很好写 但是很多数据之后会运行超时或者根本运行不出来
求问大神 有没有简单的办法

  • 写回答

3条回答 默认 最新

  • u52983610 2016-03-07 03:02
    关注

    我觉得你可以加个map试试,储存颜色P对应的珠子的位置,比如一开始1,2,。。,20,1就对应1 ,2就对应2.。。。然后加入珠子就update这个颜色的珠子的位置,这样一是节省add里indexof的时间,二是可以用removeat代替remove

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘