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

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 模拟超时
      • 2.2 优化通过

1. 题目

某乐团的演出场地可视作 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

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

2. 解题


从 (0, -1) 出发,发现 每个边走到尽头的步数规律 n, n-1, n-1, n-2, n-2 …

2.1 模拟超时

class Solution {
public:int orchestraLayout(int num, int xPos, int yPos) {long long tot = 1LL*num*num, ct = 0;long long x0 = 0, y0 = 0, x1 = 0 , y1 = -1, delta = num, i = 0;long long d, idx;while(ct < tot){if(i%2 == 1)delta--;//奇数的时候,步长减少 1ct += delta; // 总的格数if(i%4==0) // 四个方向挪动的坐标{y1 += delta;}else if(i%4 == 1){x1 += delta;}else if(i%4 == 2){y1 -= delta;}else{x1 -= delta;}if(x0 == xPos && x1 == xPos && ((yPos >= y0 && yPos <= y1) || (yPos >= y1 && yPos <= y0))){	// 如果在前后端点之间,则找到位置d = abs(y1-yPos); // 计算偏差idx = ct-d; // 减去偏差格数break;}else if(y0 == yPos && y1 == yPos && ((xPos >= x0 && xPos <= x1) || (xPos >= x1 && xPos <= x0))){d = abs(x1-xPos);idx = ct-d;break;}x0 = x1;y0 = y1;i++;}return (idx%9==0) ? 9 : (idx%9);  // 返回序号}
};

2.2 优化通过

  • 先找出这个坐标处在第几层
  • 等差数列求和,所有外层的格子数目
  • 再利用上面的代码,遍历所在的一圈就可以找出答案
class Solution {
public:int orchestraLayout(int num, int x, int y) {int a = num-x, b = num-y;int layer = min(x+1,min(a, min(y+1, b)));//所在的圈layer--;// 外面有多少个完整的圈long long  ct = 4LL*layer*(num-layer), idx;// 每圈的边长 为 n, 则 格子数 为 4(n-1)// 第 layer 圈 的边长 n-2(layer-1)// 外部完全圈的格子总数:layer*4(n-1+n-2(layer-1)-1)/2// = 2*layer*(2n-1-2layer+2-1) = 4*layer(n-layer)int delta = num - 2*layer, i = 0;// (x,y)点 所在圈的 边长 delta int x0 = layer,y0 = layer-1, x1 = layer, y1 = layer-1, d;// 起点坐标 x1, y1while(i < 4) { // 遍历 目标点所在的圈if(i%2 == 1)delta--;ct += delta;if(i%4==0){y1 += delta;}else if(i%4 == 1){x1 += delta;}else if(i%4 == 2){y1 -= delta;}else{x1 -= delta;}if(x0 == x && x1 == x && ((y >= y0 && y <= y1) || (y >= y1 && y <= y0))){d = abs(y1-y);idx = ct-d;break;}else if(y0 == y && y1 == y && ((x >= x0 && x <= x1) || (x >= x1 && x <= x0))){d = abs(x1-x);idx = ct-d;break;}x0 = x1;y0 = y1;i++;}return (idx%9==0) ? 9 : (idx%9);}
};

0 ms 5.7 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python三引号注释_python使用三引号来注释的具体原因?

Why didnt python just use the traditional style of comments like C/C/Java uses: /** * Comment lines * More comment lines */ // line comments // line comments // Is there a specific reason for this or is it just arbitrary? 解决方案 Python doesnt use triple…

HiveQL: 数据定义

文章目录1. Hive 数据库2. 修改数据库3. 创建表3.1 管理表3.2 外部表4. 分区表、管理表5. 删除表6. 修改表学习自《Hive编程指南》1. Hive 数据库 create database DBname; hive (default)> show databases; OK default hive Time taken: 0.023 seconds, Fetched: 2 row(s…

can协议crc计算_详解CAN/CAN FD通信中的循环冗余校验(CRC)方法

数据校验是为保证数据的完整性进行的一种验证操作。CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据。在现场总线通信和控制的实际应用中,工业应用环境往往是极端的温度以及电磁噪声或是其他的恶劣环境,系统在这种条件下能否正…

PHP操作excel类 PHPExcel

PHP操作excel类 PHPExcel http://www.cr173.com/soft/40741.html 我的微云&#xff1a;http://share.weiyun.com/2db79f1438f87999cfb09ca05890d764 下载后&#xff1a; Tests/01simple.php 看代码就可以了 很简单 -------------------- 我的案例(打包)&#xff1a; 将dede…

天玑720支持鸿蒙系统吗,天玑720属于骁龙多少 天玑720处理器相当于骁龙几

天玑700是一款最新推出的5G入门级别的处理器&#xff0c;那么这款手机芯片相当于骁龙多少处理器&#xff1f;处理器性能怎么样&#xff1f;小编为大家带来最新的手机资讯对此感兴趣的小伙伴&#xff0c;快来看看吧。天玑700相当于骁龙多少&#xff1f;在手机的性能方面相当于骁…

html5 职工入职后台管理系统_ChemCMS是一款基于GO+PHP+MYSQL+HTML5构建的化学内容管理系统

ChemCMS是一款基于GOPHPMYSQLHTML5构建的化学内容管理系统&#xff0c;旨在提高化学类企业信息化管理水平&#xff0c;ChemCMS提供了行业所需的库存管理、订单管理、产品管理、客户管理、权限管理全部解决方案&#xff0c;同时我们还提供一体化的在线商城解决方案&#xff0c;大…

oem718d 基准站设置_RTK电台、网络模式作业设置流程

RTK作业的简要流程仪器架设完成基准站和移动站硬件架设与配置&#xff0c;搭建作业的硬件环境。新建工程创建工程&#xff0c;配置参数、坐标等基础信息&#xff0c;完成作业所需的数据基础。求转换参数匹配工程所需平面坐标和默认经纬度坐标&#xff0c;在作业中直接获得所需目…

委托和事件

事件的由来 上文说到委托的安全性不佳&#xff0c;于是我们要将委托本身私有化&#xff0c;但还要暴露若干方法让外界使用。其中最重要的必然就是为委托挂接方法和调用委托&#xff0c;以便间接地调用委托所代表方法。那么事件event关键字就是c#提供给我们的一个语法糖。他并没…

ios html高度自适应,iOS UILabel高度自适应终结篇

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;网上大部分的boundingRectWithSize和sizeWithFont 计算出来的宽高在某些有特殊情况下(如链接中有n等等)计算出来的还是有偏差不准&#xff0c;此时用NSAttributedString和label的attributedText计算会迎刃而解1.给…

HiveQL: 数据操作

文章目录1. 向管理表中装载数据2. 通过查询语句向表中插入数据3. 动态分区插入4. 从单个查询语句创建表并加载数据5. 导出数据学习自《Hive编程指南》 1. 向管理表中装载数据 hive (default)> load data local inpath "/home/hadoop/workspace/student.txt">…

formdata.append加多个值_redis的五种数据结构和应用场景:微博微信点赞+加购物车等...

Redis五种数据结构如下&#xff1a;1.String 字符串类型是redis中最基本的数据类型&#xff0c;一个key对应一个value。String类型是二进制安全的&#xff0c;意思是 redis 的 string 可以包含任何数据。如数字&#xff0c;字符串&#xff0c;jpg图片或者序列化的对象。2.Hash …

bakaxl启动器怎么导入整合包_bakaxl启动器加皮肤光影mod

bakaxl启动器加皮肤光影mod是一款超级有趣的像素风格的冒险类的手游哦&#xff0c;此次为玩家带来的是不一样的游戏模组哦&#xff0c;在这里玩家可以拥有超级多的任务可以进行&#xff0c;你可以随时开启地图探索哦&#xff0c;你还可以将全新获得的材质包加入其中&#xff0c…

iOS开发-自动隐藏键盘及状态栏

1.隐藏状态栏 iOS升级至7.0以后&#xff0c;很多API被废止&#xff0c;其中原有隐藏状态栏StatusBar的方法就失效了。 原有方案 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 但很不幸&#xff0c;在后来的版本中实效了&#xff0c;因此我们可以使用新的API来…

python gevent模块 下载_【python安全攻防】包、模块、类、对象

终于又到了一周一度的整理博客的时间了&#xff0c;博主平时课余时间看书&#xff0c;周末统一整理&#xff0c;坚持周更真是爱了爱了 &#xff5e;今天要说的是python面向对象这一部分的内容&#xff0c;今天这是基础篇的第二篇&#xff0c;也是最后一篇。说来基础篇还真是少呢…

LeetCode LCP 33. 蓄水(暴力枚举)

文章目录1. 题目2. 解题1. 题目 给定 N 个无限容量且初始均空的水缸&#xff0c;每个水缸配有一个水桶用来打水&#xff0c;第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作&#xff1a; 升级水桶&#xff1a;选择任意一个水桶&#xff0c;使其容量增加为 buck…

svr公式推导_ML-支持向量:SVM、SVC、SVR、SMO原理推导及实现

目录1.导出目标2拉格朗日转换3对偶问题&#xff1a;因为是希望得出L最小时的一些参数w,b,a&#xff0c;但是目前很难一起求得最佳参数&#xff0c;所以换个思路。因为&#xff1a;所以能够容易的计算出拉格朗日乘子a约束时的最坏情况是&#xff1a;但是m个a的值还是无法求出&am…

302状态码_你见过 HTTP 哪些状态码?

❝好久没有写技术文章&#xff0c;今天在四川广元无事&#xff0c;总结一篇。附一张今天早上在嘉陵江遇见的白鹡鸰 (不是我拍的)❞白鹡鸰101 Switch Protocol200 Ok201 Created204 No Content206 Partial Content301 Moved Permanently302 Found304 Not Modified307 Temporary …

羽毛球 机器人 Robocon 2015 泰国预选赛(全国大学生机器人竞赛)

羽毛球 机器人 Robocon 2015 泰国预选赛(全国大学生机器人竞赛) 我把视频传我的优酷上了, 大家可以看看 http://i.youku.com/pomodori posted on 2015-02-04 11:26 rex686568 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/Pomodori/p/4316622.html

山西大学计算机应用专业,山西大学计算机应用技术专业

在主要课程学完并确定论文题目后&#xff0c;研究生撰写论文的时间为一年半至两年。(一)论文选题的要求1. 选题必须有一定的理论意义或应用价值论文选题必须对国民经济建设或在学术上有一定的价值。2&#xff0e;国内外研究动态论文选题时&#xff0c;学生必须掌握与该课题有关…

LeetCode LCP 34. 二叉树染色(树上DP)

文章目录1. 题目2. 解题1. 题目 小扣有一个根结点为 root 的二叉树模型&#xff0c;初始所有结点均为白色&#xff0c;可以用蓝色染料给模型结点染色&#xff0c;模型的每个结点有一个 val 价值。 小扣出于美观考虑&#xff0c;希望最后二叉树上每个蓝色相连部分的结点个数不能…