该程序将n
中的list
个整数用于用户输入的下一个count
中的t
个数字。如果数字在列表中,则为prints the count
,如果不是,则显示"NOT PRESENT"
消息。我想知道我是否可以reduce its time and space
变得很复杂,还是必须对该程序采取另一种方法。
import java.util.*;
class Memorise_Me
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
List<Integer> list=new ArrayList<Integer>(n);
while(n>0)
{
list.add(sc.nextInt());
n--;
}
int t=sc.nextInt();
int x,count=0;
while(t>0)
{
x=sc.nextInt();
count=Collections.frequency(list,x);
if(count==0)
System.out.println("NOT PRESENT");
else
System.out.println(count);
t--;
}
sc.close();
}
答案 0 :(得分:1)
除了以下行:count=Collections.frequency(list,x);
之外,这段代码几乎所有工作都是组织输入和输出。
这是发生真正计算的唯一行。实际上,时间和空间的复杂性是由标准java.util.Collections.frequency方法确定的,在这种微不足道的情况下,它应该具有很好的时间和空间特性。