我从在线求职申请中得到了这个测试,我对二维阵列没有任何经验。
构建城市的二维网格。网格的每个元素应该是一个正整数,用于指定最近的储物柜的块数。两个块之间的距离是它们的水平和垂直距离的总和(因此,对角线方向上的移动被认为是2的距离)。将网格返回为2d整数数组,其中第一个索引对应于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) {
}
答案 0 :(得分:1)
试试这个:
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;
}