如何降低该程序的时间复杂度?

时间:2018-08-20 08:46:16

标签: java time-complexity space-complexity

该程序将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();
    }

1 个答案:

答案 0 :(得分:1)

除了以下行:count=Collections.frequency(list,x);之外,这段代码几乎所有工作都是组织输入和输出。 这是发生真正计算的唯一行。实际上,时间和空间的复杂性是由标准java.util.Collections.frequency方法确定的,在这种微不足道的情况下,它应该具有很好的时间和空间特性。