首先说下结果,自测结果通过,但提交结果运行超时,case通过率14.29%。说明思路基本正确,但是代码需要改进,代码的时间复杂度O(N^2)。
刚看时不懂题在说什么,后面看大家的讨论有点懂问题是什么。用自己的话说下,输入是这样:
8 5 6 5 6 7 6 6 3 1
第一个元素8是后面数据长度。第二个元素5是要求最后的数据长度。第三个以及之后的组成需要处理的数据。也就是 
6 5 6 7 6 6 3 1
是数据。共8个元素,要把这8个元素变为5个,但是总和不能变,每次个数-1时,合并相邻元素之和最小的数。也就是当8个元素变成7个时,相邻元素和最小的是最后的2个,这组数据中3与1相加为4最小,加入数据中,而之前的3,1删掉了,最后会成为下面的数据:
6 5 6 7 6 6 4
之后的就是6和4:
6 5 6 7 6 10
之后6和5:
11 6 7 6 10
此时数据元素为要求的5个,所以处理结束。要求的结果就是这组数据中最大的那个。那就是11。返回11就是结果了。
Java的实现代码如下
import java.util.ArrayList;
import java.util.Scanner;

class Solution {
    public int getMinStep(int n, int m, ArrayList<Integer> arr) {
        int minIndex1 = 0;
        int minIndex2 = 1;
        int minSum;
        while (arr.size() != m) {
            minSum = Integer.MAX_VALUE;
            for (int i = 0, j = i + 1; i < arr.size() - 1 && j < arr.size(); i++, j++) {
                if (minSum > arr.get(i) + arr.get(j)) {
                    minSum = arr.get(i) + arr.get(j);
                    minIndex1 = i;
                    minIndex2 = j;
                }

            }
            arr.set(minIndex1, minSum);
            arr.remove(minIndex2);

            /*for (int i = 0; i < arr.size(); i++) {
                System.out.print(arr.get(i) + " ");
            }
            System.out.println(minSum+"_");*/
        }
        int result = this.getMaxInt(arr, n);
        return result;
    }

    public int getMaxInt(ArrayList<Integer> arr, int n) {
        int result = arr.get(0);
        for (int i = 0; i < arr.size(); i++) {
            if (result < arr.get(i)) {
                result = arr.get(i);
            }
        }
        return result;
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        ArrayList<Integer> arr = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            arr.add(sc.nextInt());
        }
        /*for (int i = 0; i < n; i++) {
            System.out.println(arr[i]);
        }*/
        //完成初始数据采集
        Solution solution = new Solution();
        int result = solution.getMinStep(n, m, arr);
        System.out.println(result);
    }
}