ArrayList中每个元素的最小sin次数是多少次?

时间:2018-03-14 16:18:11

标签: java

  

编写一个名为q3的公共静态方法,它接受一个I​​nteger类型的ArrayList并返回一个int。此方法返回数据中出现的最高有效值,其中有效值被定义为从输入中获取每个值的正弦的最小结果。

我不确定我做错了什么。有人可以帮忙吗?

public static int q3(ArrayList<Integer> name){ 
    double max = Integer.MAX_VALUE;
    int count =0;
    for(double value : name){
        if(Math.sin(value) < max ){
            max = Math.sin(value);
            count++;

        } else if (Math.sin(value) == max) {
            count ++;
        }
    }
    return count;
}

1 个答案:

答案 0 :(得分:0)

根据我对最重要值的定义的理解,该方法应该计算从数组开始到结束时找到的每个最小值。这意味着只要您找到最小值(包括最小值等于当前最小值),您就可以计算它。

public static int q3(List<Integer> name){ 
    double min = name.get(0);
    int count = 0;

    for(int i = 1 ; i < name.size() ; i++){
        double value = name.get(i);
        if(Math.sin(value) <= min){
            min = Math.sin(value);
            count++;
        }
    }
    return count;
}

话虽如此,以下是对您的计划的一些更正:

  • 不要使用“max”变量名,而是使用“min”。这很令人困惑,但你确实希望找到最小的数组,对吗?
  • 不要使用int min = Integer.MAX_VALUE;该数字不是数组的一部分,因此在计算数组中找到的最小数字时,您无法使用此方法。数组的第一个数字(几乎)总是较小,所以计数会自动增加到1,原因很明显,但在此之前你没有比较数组的任何元素,那么你怎么能算数呢? 1,对吗?用于查找线性时间最小值的优化版本是定义数组的min变量以指向第一个元素并从数组的第二个元素开始迭代。