如何返回这样的多维数组? [英] How do I return such an multi-dimensional array?

查看:61
本文介绍了如何返回这样的多维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

方法 int [] [] labelPath(int n,int [] [] points)创建一个长度为 n 的新正方形数组,并将其返回. data0 中的每一行都描述了二维数组中的一个点.在这里,列 0 始终是点的列索引,列 1 则是点的行索引.如果返回数组到达 data0 中的每个点,则返回值 -1 .在所有其他点上,返回数组都包含值 n .

The method int[][] labelPath(int n, int[][] points) creates a new square array of length n and returns it back. Each line in data0 describes a point in a two-dimensional array. The column 0 is here always for the column index and column 1 for the row index of a point. If the return array reaches each point in data0 returns the value -1. At all other points, the return array contains the value n.

例如: n = 4 data0 = {{3,0},{0,1},{2,2}} 应该返回:

For example: n = 4 and data0 = {{3, 0}, {0, 1}, {2, 2}} should return:

[[4, 4, 4, -1], [-1, 4, 4, 4], [4, 4, -1, 4], [4, 4, 4, 4]]

到目前为止,我的代码:

My code so far:

int[][] labelPath(int n, int[][] points) {
    int[][] help = new int[n][n];
    for (int i = 0; i < input.length; i++) {
        for (int j = 0; j < input[i].length; j++) {
            int row = input[1].length;
            int column = input[0].length;
            for (int k = 0; k < help.length; k++) {
                for (int l = 0; l < help[k].length; l++) {
                    if (help[i][j] == input[row][column]) {
                        help[i][j] = -1;
                    } else {
                        help[i][j] = n;
                    }
                }
            }
        }
    }
    return help;
}

推荐答案

您可以使用流来创建这样的数组:

You can use streams to create such an array:

public static int[][] labelPath(int n, int[][] points) {
    // create a new empty 2d array filled with zeros
    int[][] matrix = new int[n][n];
    // set all array elements to 'n'
    Arrays.setAll(matrix, row -> {
        Arrays.fill(matrix[row], n);
        return matrix[row];
    });
    // iterate over the points array and set the corresponding elements to '-1'
    Arrays.stream(points).forEach(row -> matrix[row[1]][row[0]] = -1);
    return matrix;
}

// test
public static void main(String[] args) {
    int n = 4;
    int[][] data0 = {{3, 0}, {0, 1}, {2, 2}};
    int[][] matrix = labelPath(n, data0);

    // output
    Arrays.stream(matrix).map(Arrays::toString).forEach(System.out::println);
}

[4, 4, 4, -1]
[-1, 4, 4, 4]
[4, 4, -1, 4]
[4, 4, 4, 4]


另请参见:创建初始重复数据的二维字符串数组的最有效方法是什么?

这篇关于如何返回这样的多维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆