二维数组的宽度、长度和坐标

本文关键字:坐标 二维数组 | 更新日期: 2023-09-27 18:04:34

我从一个在线工作申请中得到了这个测试,我没有任何2d数组的经验。

  1. 一个正整数范围1-9,代表你的城市在城市街区中的长度
  2. 一个正整数范围1-9,代表你的城市在城市街区的宽度
  3. 包含所有代表储物柜位置的X坐标的数组,每个X坐标范围为1-9
  4. 包含所有代表储物柜位置的Y坐标的数组,每个Y坐标范围为1-9

构建城市的二维网格。网格的每个元素都应该是一个正整数,指定到最近的储物柜的块数量。两个块之间的距离是它们的水平和垂直距离的总和(因此在对角线方向上的移动被认为是2的距离)。返回您的网格为二维整数数组,其中第一个索引对应于X维度,第二个索引对应于Y方向。

Example #1
Input
1. 3
2. 5
3. [1]
4. [1]
Output
012
123
234
345
456
Example #2
Input
1. 5
2. 7
3. [2, 4]
4. [3, 7]
Output
32345
21234
10123
21234
32323
43212
32101

static int[][] getLockerDistanceGrid(int cityLength, int cityWidth, int[] lockerXCoordinates, int[] lockerYCoordinates) {
}

二维数组的宽度、长度和坐标

试试这个:

static int[,] getLockerDistanceGrid(int cityLength, int cityWidth, int[] lockerXCoordinates, int[] lockerYCoordinates){
int[,] array = new int[cityWidth,cityLength];
for(int i = 0; i < cityLength; i++)
{
    for(int j = 0; j < cityWidth; j++)
    {
        int value = Math.Abs(i - (lockerXCoordinates[0]-1)) +
            Math.Abs(j - (lockerYCoordinates[0]-1));
        for(int k = 1; k < lockerXCoordinates.Count(); k++)
        {
            int current = Math.Abs(i - (lockerXCoordinates[k]-1)) + Math.Abs(j - (lockerYCoordinates[k]-1));
            value = Math.Min(value,current);
        }
        array[j,i] = value;
    }
}
return array;
}