LCP 29-乐团站位
某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9
种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。 为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以1,2,...,9 循环重复排列。例如当 num = 5 时,站位如图所示  请返回位于场地坐标 [Xpos,Ypos] 的成员所持乐器编号。 示例
1: >输入:num = 3, Xpos = 0, Ypos = 2 > >输出:3 > >解释:
示例
2: >输入:num = 4, Xpos = 1, Ypos = 2 > >输出:5 > >解释:
提示:
- 1 <= num <= 10^9 - 0 <= Xpos, Ypos < num
矩形的圈数为 : (num+1)/2 向上取整
当前坐标所在圈数 : 行号 , 列号 ,num-行号 ,num-列号 中最小的 +1 即为所在圈数
假设矩形如下
假设坐标 (1,3)
num=5;
圈数 : (5+1)/2=3
坐标所在圈数 : 1+1=2 在第二圈
边长为5的正方形面积 : 5 * 5=25
边长为(5-2(2(所在圈数)-1))的正方形面积* = 3 * 3 = 9;
红圈的面积 - 绿圈的面积

面积的差为 25-9=16
即当前圈之前有16个元素
所以当前圈左上角编号为 16%9 +1 = 8

然后就根据坐标在正方形的四个边的哪个边,来判断他的编号
代码如下:
1 | public int orchestraLayout(int n, int xPos, int yPos) { |

Comments