题解 | #牛牛的数组匹配#

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int sumA = 0;
        // a数组之和
        for (int i = 0; i < n; i++) {
            sumA += sc.nextInt();
        }
        // 将b数组存储起来
        int[] b = new int[m];
        for (int i = 0; i < m; i++) {
            b[i] = sc.nextInt();
        }
        // 只有一个的时候直接输出
        if (m == 1) {
            for (int i = 0; i < m; i++) {
                System.out.print(b[i] + " ");
            }
        } else {
            int endIndex = 0; // 结束的下标
            int beginIndex = 0; // 开始的下标
            int sub = Math.abs(b[0] - sumA); // 给一个默认初始化的值
            for (int i = 0; i < m; i++) {
                int sum = 0; // 每一次都需要归0,重新计算
                for (int j = i; j < m; j++) {
                    sum += b[j]; // 计算子数组之和
                    int num = Math.abs(sum - sumA);
                    if (num < sub) {
                        sub = num;
                        beginIndex = i;
                        endIndex = j;
                    }
                }
            }
            // 输出最后的子数组
            for (int i = beginIndex; i < endIndex + 1; i++) {
                System.out.print(b[i] + " ");
            }
        }
    }
}


全部评论

相关推荐

06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务