-4

尽可能优化(降低空间和时间复杂度)这个功能。

  public void q1(String str, int[] arr)
  {    
        String local = "findnumber"; 
        for(int i=0; i<arr.length; i++)
        { 
            if(str.equals(local) && arr[i] * 2 > 10)
            { 
                Integer in = new Integer(arr[i]);    
                in = in * 2; 
                System.out.print(in.toString());
            } 
        } 
   } 
4

1 回答 1

3

看起来像家庭作业,但我会咬一口。这就是我得到的...

  • str.equals(local)可以在循环之外计算(并且可能完全阻止您进入循环)
  • 您可以存储 的值arr[i]以阻止它被多次查找
  • 当你只是在做数学运算时,为什么要从 i 创建一个整数?
  • in *= 2理论上比in = in * 2(或者i如果你in像上面那样杀死)更快
  • 由于您使用的只是arr[i] * 2,因此计算一次并if在输出中使用它。(不需要in=in*2或根本不需要in*=2
  • 缓冲输出,在循环结束时只有一个输出语句。
于 2013-06-04T04:18:26.670 回答