一尘不染

如何在具有正值和负值的数组中找到最大的负值?

java

我需要返回最大的负值,如果没有负值,则需要返回零。这是我所拥有的:

public int greatestNegative(int[] list) {


    for (int i = 0; i < list.length; i++) {


       if (list[i] < 0)
           negativeNumbers ++;
    }

    int j = list.length - 1;

    while (j >= 0) {
       if (list[j - negativeNumbers] < 0) {
        list[j] = 0;
        list[j - 1] = list[j - negativeNumbers];
        negativeNumbers--;
        j--;
       }
       else{
        list[j] = list[j - negativeNumbers];
        j--;
     }
  }

}

阅读 431

收藏
2020-12-03

共1个答案

一尘不染

您只需要考虑以下两个步骤即可解决此问题:

  1. 只考虑list []中的负值。
  2. 在负值范围内的循环中,如果(结果== 0)或(值>结果)更新当前结果。

码:

public int greatestNegative(int[] list) {
    int result = 0;
    for (int i = 0; i < list.length; i++) {
        if (list[i] < 0) {
            if (result == 0 || list[i] > result) {
                result = list[i];
            }
        }
    }
    return result;
}
2020-12-03