65 lines
2.0 KiB
Java
65 lines
2.0 KiB
Java
|
//某乐团的演出场地可视作 `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` 👍 23 👎 0
|
|||
|
|
|||
|
package leetcode.editor.cn;
|
|||
|
|
|||
|
/**
|
|||
|
* LCP 29:乐团站位
|
|||
|
*/
|
|||
|
public class SNJvJP {
|
|||
|
public static void main(String[] args) {
|
|||
|
//测试代码
|
|||
|
Solution solution = new SNJvJP().new Solution();
|
|||
|
System.out.println(solution.orchestraLayout(7466, 7084, 2520));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* 力扣代码
|
|||
|
*/
|
|||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
|||
|
class Solution {
|
|||
|
public int orchestraLayout(int num, int xPos, int yPos) {
|
|||
|
long round = Math.min(Math.min(xPos, num - xPos - 1), Math.min(yPos, num - yPos - 1));
|
|||
|
long length = (xPos - round) + (yPos - round);
|
|||
|
if (xPos > yPos) {
|
|||
|
round++;
|
|||
|
}
|
|||
|
long head = 4 * round * (num - round) + 1;
|
|||
|
int result = (int) (xPos > yPos ? (head - length) % 9 : (head + length) % 9);
|
|||
|
return result == 0 ? 9 : result;
|
|||
|
}
|
|||
|
}
|
|||
|
//leetcode submit region end(Prohibit modification and deletion)
|
|||
|
|
|||
|
}
|