You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中static Pair类型的getMinMax方法是什么?为何前缀标注Pair?

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;
 
        // 如果只有1个元素
        if (low == high) {
            minmax.max = arr[low];
            minmax.min = arr[low];
            return minmax;
        }
 
        /* 如果有2个元素 */
        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;
        }
 
        /* 如果元素数量大于2 */
        mid = (low + high) / 2;
        mml = getMinMax(arr, low, mid);
        mmr = getMinMax(arr, mid + 1, high);
 
        /* 比较两部分的最小值 */
        if (mml.min < mmr.min) {
            minmax.min = mml.min;
        } else {
            minmax.min = mmr.min;
        }
 
        /* 比较两部分的最大值 */
        if (mml.max > mmr.max) {
            minmax.max = mml.max;
        } else {
            minmax.max = mmr.max;
        }
 
        return minmax;
    }
 
    /* 测试用主方法 */
    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);
 
    }
}
问题1解答:static Pair getMinMax的作用和实现逻辑

作用

这个静态方法的作用是接收int类型数组、数组查询范围的左边界low和右边界high,计算该下标范围内所有元素的最大值和最小值,将两个结果封装在Pair类对象中返回。

实现逻辑

方法采用分治算法实现,执行流程如下:

  • 单元素边界处理:若当前查询范围只有1个元素(low == high),该元素同时是最大值和最小值,直接封装返回。
  • 双元素边界处理:若当前查询范围只有2个元素,直接比较两个元素的大小,分别赋值给min和max后返回。
  • 递归拆分:若查询范围内元素数量大于2,取中间下标mid将范围拆分为左右两个子区间,分别递归调用getMinMax获取左区间的最值对象mml、右区间的最值对象mmr。
  • 结果合并:比较两个子区间的最小值,取更小的作为整体最小值;比较两个子区间的最大值,取更大的作为整体最大值,封装后返回最终结果。
问题2解答:方法前标注内部类名Pair的原因

方法名前标注的Pair是该方法的返回值类型,是Java方法定义的固定语法要求:[修饰符] 返回值类型 方法名(参数列表) {方法体}。
Java的方法仅支持返回单个值,而该方法需要同时返回最大值、最小值两个int结果,所以提前定义了静态内部类Pair,用它的两个成员变量min和max分别存储两个结果,将两个值封装为一个Pair对象返回,因此方法的返回值类型必须声明为Pair。
补充说明:由于Pair是定义在Geeks类内部的静态内部类,在Geeks类内部可以直接使用Pair作为类型名,若在Geeks类外部使用该类型,需要写全类名Geeks.Pair。

内容的提问来源于stack exchange,提问作者Aahlad Kethineedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:48:03