我从一个在线工作申请中得到了这个测试,我没有任何2d数组的经验。
- 一个正整数范围1-9,代表你的城市在城市街区中的长度
- 一个正整数范围1-9,代表你的城市在城市街区的宽度
- 包含所有代表储物柜位置的X坐标的数组,每个X坐标范围为1-9
- 包含所有代表储物柜位置的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;
}