java list算法问题(给定一 int 数组返回倒序的最大连续递增的区间(至少大于等于2)数组倒序)

java list算法问题(给定一 int 数组返回倒序的最大连续递增的区间(至少大于等于2)数组倒序)

输入:1,3,4,9,6,7 则返回:6,7
输入:1,3,4,1,2,3 则返回:1,2,3
输入:1,3,4,2,4,7 则返回:2,4,7
输入:1,8,4,5,6,7 则返回:4,5,6,7
输入:1,3,4,5,6,7 则返回:1,3,4,5,6,7

输入:2,3,4,5,2,3,1 则返回:null
输入:2,3,4,5,1,2,3,1 则返回:null
输入:1,3,4,5,6,7,1 则返回:null

public static int[] result(int[] ints) {
        int len = ints.length;
        if (len < 2 || ints[len - 1] <= ints[len - 2]) {
            return null;
        }
        List<Integer> res = new ArrayList<Integer>();
        List<Integer> list = new ArrayList<Integer>();
        for (int i = len - 1; i > 0; i--) {
            int before = ints[i - 1];
            int after = ints[i];
            list.add(after);
            if (after <= before && res.size() == 0) {
                res.addAll(list);
                list.clear();
            } else if (after <= before) {
                break;
            }
            if (i == 1 && res.size() == 0) {
                list.add(before);
                res.addAll(list);
            }
        }
        Collections.reverse(res);
        Integer[] integers = res.toArray(new Integer[res.size()]);
        return Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();
    }

 

posted @ 2021-01-11 09:28  锐洋智能  阅读(298)  评论(0编辑  收藏  举报