解决Java升序子数组问题

问题描述 投票:-2回答:1

我有一个要解决的问题。问题指出我需要放置整数,以便每个最大严格提升子数组的元素都可以颠倒。

例如,给定数组{5,7,10,4,2,7,8,1,1,3},执行此方法后,数组的元素将为{10,7,5,4,8 ,7、2、3、1}。

5,7,10,变成10,7,5。4留下了4。2,7,8变成8,7,2。1,3变成3,1。

我的尝试失败,或者仅按降序对整数进行排序。如何使这些嵌套循环标识最大的严格升序子数组? >

这是我到目前为止的代码

public static void reverseAscendingSubArray(int[] items) {
    Stack<Integer> stack = new Stack<>();
    int[] result = new int[items.length];
    for (int i = 0; i < items.length; i++) {
        if (i == 0 || items[i - 1] < items[i]) {
            stack.push(items[i]);
        } else {
            for (int j = stack.size(); j > 0; j--) {
                result[i - j] = stack.pop();
            }
            stack.push(items[i]);
        }
    }
    if (!stack.empty()) {
        for (int j = stack.size(); j > 0; j--) {
            result[items.length - j] = stack.pop();
        }
    }
    return result;
java arrays reverse
1个回答
0
投票

除了您的method-return-type是void而不是int [],我看不到问题。我得到了该输入所要求的结果,并且您使用了算法。

© www.soinside.com 2019 - 2024. All rights reserved.