java算法-acm模式-求两个数组的两个元素之和的最大那4个,并降序排序出来

《重启9》

笔试算法真题-acm模式-求两个数组的各任意两个元素之和,并输出降序排序出来4个

前言

博主最近,参加了一次笔试中的算法题,有要求要用acm模式去实现,跟同学们自身在LeetCode上面做的算法题有点不太一样,其中我们做的只是要写核心代码就行。所以,博主分享一波用asm模式怎么去完成一条java的算法题

上题

要求

现有两个不同元素组成长度相同的数组,求两个数组的各任意两个元素之和,并通过降序排序输出最大的4个和
运行时间<2s

输入: 5 4
1 2 3 4 5
3 4 7 9 11

提示:第一排分别为:数组长度和输出次数
第二和第三排分别为:两个数组

输出: 16 15 14 14

实现代码

import java.util.LinkedList;
        import java.util.Scanner;

class test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        /**
         * 先获取第一排的数字
         */
        int n=in.nextInt(); //数组长度
        int k=in.nextInt(); //输出次数
        while (in.hasNextInt()){
            int[]  t1=new int[n];
            int[]  t2=new int[n];

            /**
             * 通过两轮for循环把两个数组装上元素
             */
            for (int i=0;i<n;i++){
                t1[i]=in.nextInt();
            }
            for (int i=0;i<n;i++){
                t2[i]=in.nextInt();
            }

            /**
             * 把所以的和放进LinkedList列表
             */
            LinkedList<Integer> list=new LinkedList();
            for (int i=0;i<n;i++){
                for (int j=0;j<n;j++){
                    list.add(t1[i]+t2[j]);
                }
            }
            /**
             * 典中典方法让数据重新排序
             */
            for (int i=0;i<n*n;i++){
                for (int j=i+1;j<n*n;j++){
                    int a=list.get(i);
                    int b=list.get(j);
                    if(a>b){
                        list.set(i,b);
                        list.set(j,a);
                    }
                }
            }
            /**
             * 从后面输出注意:i>list.size()-(k+1)
             */
            for (int i =list.size()-1; i>list.size()-(k+1); i--){
                System.out.print(list.get(i)+" ");
            }
            break;
        }
    }
}

运行结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值