拼多多排序函数笔试题

这是一道关于拼多多笔试题的解析,主要探讨如何找到数组中的最大值。题目描述中提到,通过解析已知如何找到最小值,而最大值的求解策略是保证n-1尽可能小,同时选择最大的元素Ax,选择n即可得到最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拼多多排序函数笔试题

1.题目描述:

在所有排列中,找出最后一个数值的最小值和最大值;开始楼主写了个全排序一个个判断,
达不到时间复杂度要求,
本题的关键是注意到最小值的求解:结果一定为0或者1,前三个数可以构成最小值0;
并且连续的4个数可以构成最小值0

在这里插入图片描述

2.代码:

 public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int num = input.nextInt();
        for (int i = 0; i < num; i++) {
            int testNum = input.nextInt();
            int resMin=min(testNum);
            int resMax=max(testNum);
            System.out.println(resMin+" "+resMax);
        }
    }
    public static int min(int n){
        if (n % 4 == 0 || n + 1 % 4 == 0) {
            return 0;
        }
        else
            return 1;
    }
    public static int max(int n){
        if(n==1){
            return 1;
        }
        else if(n==2){
            return 1;
        }
        return Math.abs(min(n-1)-n);
    }

3.解析:

根据第一个的解析已经能求得最小值,那么最大值怎么求解?
因为Fn的最大值为:
在这里插入图片描述
所以需要保证n-1尽量小,Ax尽量大,就是选择n,就可以得到上面结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值