提问人:Aahlad Kethineedi 提问时间:8/23/2021 最后编辑:Andy TurnerAahlad Kethineedi 更新时间:8/23/2021 访问量:355
Java 嵌套类
Java Nested Class
问:
谁能解释静态 Pair get Min Max 方法?为什么我们在 get Min Max 方法前面使用 Inner 类名 Pair?我无法找到有关此内容的信息。谁能解释一下?我是java的新手。 法典:
public class Geeks {
static class Pair {
int min;
int max;
}
static Pair getMinMax(int arr[], int low, int high) {
Pair minmax = new Pair();
Pair mml = new Pair();
Pair mmr = new Pair();
int mid;
// If there is only one element
if (low == high) {
minmax.max = arr[low];
minmax.min = arr[low];
return minmax;
}
/* If there are two elements */
if (high == low + 1) {
if (arr[low] > arr[high]) {
minmax.max = arr[low];
minmax.min = arr[high];
} else {
minmax.max = arr[high];
minmax.min = arr[low];
}
return minmax;
}
/* If there are more than 2 elements */
mid = (low + high) / 2;
mml = getMinMax(arr, low, mid);
mmr = getMinMax(arr, mid + 1, high);
/* compare minimums of two parts*/
if (mml.min < mmr.min) {
minmax.min = mml.min;
} else {
minmax.min = mmr.min;
}
/* compare maximums of two parts*/
if (mml.max > mmr.max) {
minmax.max = mml.max;
} else {
minmax.max = mmr.max;
}
return minmax;
}
/* Driver program to test above function */
public static void main(String args[]) {
int arr[] = {1000, 11, 445, 1, 330, 3000};
int arr_size = 6;
Pair minmax = getMinMax(arr, 0, arr_size - 1);
System.out.printf("\nMinimum element is %d", minmax.min);
System.out.printf("\nMaximum element is %d", minmax.max);
}
}
答:
0赞
m.mashaly
8/23/2021
#1
之所以使用,是因为该函数应该返回数组中的最小元素和数组中的最大元素,
因此编写此代码段的人决定创建 Pair 类,以便更直观地将其作为具有 min 和 max 属性的对象返回,而不是返回长度为 2 的数组(这也是有效的)。Pair minmax = new Pair()
0赞
DarthBenro008
8/23/2021
#2
我总是建议遵循语法。在 Java 中,编写函数的语法是:
<access modifier> <return type> <functionName>(parameter_type parameter_name){
// function body
}
在您共享的代码片段中:
- 访问修饰符:static
- 返回类型:双
- 函数名称:getMinMax
- 参数:int arr[]、int low 和 int high
因此,该函数返回一个 Pair 类型,而不是一个具有 2 个值的数组。它用答案预先填充 Pair 的 min 和 max 字段。
1赞
2 revsAndy Turner
#3
不是回答这个问题,而是@luk2302的观点:这种方法真的太复杂了,用循环可以更容易地编写:
static Pair getMinMax(int arr[]) {
Pair result = new Pair();
result.min = Integer.MAX_VALUE;
result.max = Integer.MIN_VALUE;
for (int a : arr) {
result.min = Math.min(result.min, a);
result.max = Math.max(result.max, a);
}
return result;
}
评论
0赞
Andy Turner
8/23/2021
@luk2302删除了低/高。如果你不递归,就不需要这些。
评论
Pair
int
String
Pair