2 a1394393468 a1394393468 于 2016.03.07 10:36 提问

【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个回答

u013596119
u013596119   Rxr 2016.03.07 11:02

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

lx624909677
lx624909677   Ds   Rxr 2016.03.07 15:53

很多数据之后会运行超时或者根本运行不出来,这说明你程序本身就有逻辑问题了,而不是说方法复杂,运行不出来,很可能是某个地方死循环了

cxsmarkchan
cxsmarkchan   2016.03.09 19:20

ArrayList内部采用数组存储,ADD和DEL涉及增删元素,复杂度比较高,不妨把ArrayList换成LinkedList?其他的不用变,复杂度可以从O(mn^2)提升到O(mn)。如果还要进一步提升速度,可以按楼上说的,使用map记录。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
演讲稿含计时器
该PPT是辩论赛中用的,里边包括了计时器。凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
汇编语言实现四则运算
高人写的程序,经过编译 没有错误 凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
数据库原理课件 ppt
数据库系统概论 第四版课件ppt 凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
Easylanguage加密
E语言 加密 非常完美 可以拖放 Easylanguage源码 凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
comm32(串口调试程序,带源码)
很好用的串口调试程序,带源码 凑字数凑字数凑字数凑字数凑字数凑字数
导入excel到数据库
导入excel的小工具,通过调用第三方类库,完成DataSet接收excel数据。说完了,凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数
mnist-caffe批量测试
博客【caffe-Windows】识别率批量输出——matlab实现】对应的代码实现,凑字数凑字数凑字数凑字数凑字数凑字数
unix环境高级编程源码
unix环境高级编程源码 没什么好说的。 凑字数凑字数凑字数凑字数
gdi++ 字体程序
gdi++ 稳定版 懂的人拿走 凑字数凑字数凑字数凑字数
沙盘SANDBOXIE 3.56 (Win32/64)
沙盘,不用多做介绍了吧,剩下的是凑字数的凑字数凑字数凑字数