LeetCode——LCP 29. 乐团站位[简单]——分析及代码[Java]

  • 一、题目
  • 二、分析及代码
    • 1. 直接计算
      • (1)思路
      • (2)代码
      • (3)结果
  • 三、其他

一、题目

某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。
为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,…,9 循环重复排列。

请返回位于场地坐标 [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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/SNJvJP
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、分析及代码

1. 直接计算

(1)思路

先确定成员所在的圈数,然后结合数学方法计算得到该圈左上角的起始值,再判断成员所在的边,计算得到乐器编号。

(2)代码

class Solution {public int orchestraLayout(int num, int xPos, int yPos) {//确定成员在第round圈int xRound = Math.min(xPos + 1, num - xPos);int yRound = Math.min(yPos + 1, num - yPos);int round = Math.min(xRound, yRound);int len = num - 1;//当前圈边的长度//确定成员所在圈左上角起始值long start = 1L;start = (start + (len - round + 2L) * (round - 1L) * 4L) % 9L;len -= ((round - 1) * 2);//确定成员乐器编号int ans;if (xPos + 1 == round) {//成员在上边ans = (int)((start + yPos + 1 - round) % 9);} else if (num - yPos == round){//成员在右边start = (start + (len % 9)) % 9;ans = (int)((start + xPos + 1 - round) % 9);} else if (num - xPos == round){//成员在下边start = (start + (len % 9) * 2) % 9;ans = (int)((start + num - round - yPos) % 9);} else {//成员在左边start = (start + (len % 9) * 3) % 9;ans = (int)((start + num - round - xPos) % 9);}return (ans == 0) ? 9 : ans;//也可将start初始值设置为0,返回ans%9+1}
}

(3)结果

执行用时 :0 ms,在所有 Java 提交中击败了 100.00% 的用户;
内存消耗 :34.9 MB,在所有 Java 提交中击败了 96.57% 的用户。

三、其他

暂无。

LeetCode——LCP 29. 乐团站位[简单]——分析及代码(Java)相关推荐

  1. LeetCode LCP 29. 乐团站位(数学 等差数列)

    文章目录 1. 题目 2. 解题 2.1 模拟超时 2.2 优化通过 1. 题目 某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员. ...

  2. LeetCode LCP 29. 乐团站位

    力扣 解题思路:    参考 Deeemo 1.第一步定位给定的坐标所在的层数:round = min(xPos, num - 1 - xPos, yPos, nums - 1 - yPos) 2.根 ...

  3. LCP 29. 乐团站位(leetcode)

    完成时间:2021年6月22日 ps:你敢相信,这道题是简单题?我废了 写这篇完全是纪念今天的辣子鸡和今天我用费的时光 题目:https://leetcode-cn.com/problems/SNJv ...

  4. 【leetcode-Python】-找数学规律-LCP 29. 乐团站位

    题目链接 https://leetcode-cn.com/problems/SNJvJP/ 题目描述 某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个 ...

  5. LCP 29. 乐团站位

    题目链接:https://leetcode-cn.com/problems/SNJvJP/ 思路:先算出(xPos,yPos)在第几层,然后再算出他在当前层的位置(上下左右),通过层数(不加上他在的那 ...

  6. LeetCode—494. 目标和(Target Sum)——分析及代码(Java)

    LeetCode-494. 目标和[Target Sum]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 (2)代码 (3)结果 2. 动态规划+节省空间 (1)思路 ...

  7. LeetCode—55.跳跃游戏(Jump Game)——分析及代码(C++)

    LeetCode-55.跳跃游戏[Jump Game]--分析及代码[C++] 一.题目 二.分析及代码 1. 贪心 (1)思路 (2)代码(简洁) (3)代码(高效) (4)结果 三.其他 一.题目 ...

  8. leetcode 29.乐团站位(蛇形矩阵)

    某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员.乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器. 为保证声乐混合 ...

  9. python中“羊车门问题”的简单分析与代码实现

    1."羊车门问题"题目及要求. 2.问题的数学逻辑分析. 3.python代码分析出换和不换的概率. "羊车门问题"题目及要求: 有三扇关着的门,一扇门后面停着 ...

最新文章

  1. 练习题3(求四位会员卡号之和)
  2. 【摘录】Ics4.0如何去除系统的状态栏
  3. 50个Android开发人员必备UI效果源码[转载]
  4. php 循环向select添加选项
  5. hibernate createsqlquery delete多个表_go语言教程哪里有?xorm表基本操作及高级操作...
  6. 核心概念——节点/边/Combo——内置节点——Diamond
  7. shell编程之随机数和嵌套循环
  8. SAP CRM里使用BAdI阻止产品主数据保存的一种办法
  9. Qt实现Word文档界面样式--QtitanRibbon
  10. linux mysql管理软件_8款适合Linux用户使用的数据库管理工具!
  11. Java 14 中令人期待的五大新特性!
  12. 深圳联通与深圳中琛源科技正式达成了5Gn战略合作
  13. 软件使用-如何卸载360安全客户端
  14. “指付通”还是“支付痛”?-【软件和信息服务】2014.10
  15. Unity学习资源(超全)汇总 基础+项目+进阶+面试
  16. 电脑断电word文档不见了恢复
  17. 计算机在保险的应用,浅谈计算机信息系统在医疗保险中的应用
  18. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
  19. 网络攻击与防御-常用网络命令的使用
  20. C++实现坦克大战(超详细)(文末附源码!!!)

热门文章

  1. fulltext mysql_mysql深入理解全文索引fulltext及实例剖析
  2. 怎么解决安装windows系统无法创建新的分区的问题
  3. Windows XP中如何自动终止Blackice防火墙(转)
  4. WAP网页实现手机拨号功能
  5. generate...for的用法
  6. 逍遥咏叹(少年诗词)
  7. 日常填坑 ——linux服务器,mongodb吃内存,导致服务器缓慢
  8. JAVA3D 多段bezier曲面拼接_Java3D毕业设计.doc
  9. Unity --- 虚拟轴的使用
  10. 黑马32期视屏完整版