在函数中返回Java中的数组

7eumitmz  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(126)

我已经把这段代码写成了问题496下一个更大的元素I这里我必须返回一个带括号的数组,比如输出必须是[-1,3,-1],我不能打印它,只能返回,怎么做?
Leetcode https://leetcode.com/problems/next-greater-element-i/description/?envType=study-plan&id=programming-skills-i中的问题链接

public int[] nextGreaterElement(int[] nums1, int[] nums2) {
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 0;i<nums1.length;i++){
        for (int j = 0;j<nums2.length;j++){
            if (nums1[i] == nums2[j]){
                try{
                    if(nums1[i] < nums2[j+1]){
                        list.add(nums2[j+1]);

                    }else{
                        list.add(-1);
                    }
                }catch (ArrayIndexOutOfBoundsException e){
                    list.add(-1);
                }
            }
        }
    }
    int[] array = list.stream().mapToInt(i->i).toArray();
    for (int i = 0; i<array.length;i++){
        System.out.println(array[i]);
    }
    return new int[]{}array; // this is error (should return [-1,3,-1])
}
6tqwzwtp

6tqwzwtp1#

return new int[]{}array;不是一个语句。您试图返回一个new int[],它本身不会导致错误,但是在new int[]{}之后添加array绝对没有任何作用,并且会导致编译器错误。只需返回您在它上面创建的数组。

int[] array = list.stream().mapToInt(i->i).toArray();
    return array;

我测试了你的回答:

public static void main(String[] args) throws IOException
  {
    int[] nums1 = {4,1,2};
    int[] nums2 = {1,3,4,2};
    int[] expected = {-1,3,-1};

    var result = nextGreaterElement(nums1, nums2);

    if (Arrays.equals(expected, result)){
      System.out.println("They are the same");
    } else {
      System.out.println("They are different");
    }
  }

输出为They are the same

相关问题