LCP 29-乐团站位
某乐团的演出场地可视作 num * num
的二维矩阵 grid
(左上角坐标为 [0,0]
),每个位置站有一位成员。乐团共有 9
种乐器,乐器编号为 1~9
,每位成员持有 1
个乐器。 为保证声乐混合效果,成员站位规则为:自 grid
左上角开始顺时针螺旋形向内循环以1,2,...,9
循环重复排列。例如当 num = 5
时,站位如图所示 ![image.png](https://pic.leetcode-
cn.com/1616125411-WOblWH-image.png) 请返回位于场地坐标 [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