希望大神给个题解(Java)

给定一个边长为len的表格,把它按边长gridLen来划分为若干等分的格栅。(len为gridLen的整数倍长)。
* 请计算进行格栅化之后,给定的坐标(x,y)出于第几个格栅。格栅编号从1开始
* 如:以下为边长6的表格,格栅边长为3.其中(1,5)出于第二个格栅。输出2
全部评论
public static int solution(int len, int gridLen, int x, int y) { //每一行或者每一列有多少个格栅 int per = len / gridLen; //这个行列是格栅的行列 都是从一开始算起 int row = x / gridLen + 1; int col = y / gridLen + 1; int res; if (row == 1) { res = col; } else { res = per * (row - 1) + col; } return res; }
1 回复 分享
发布于 04-28 17:34 广东
大概花十分钟,想想,直接看坐标到编号区块的关系看不出来。就引入两个中间量m,n代表行列所划分的区块数。然后设点为x,y,然后就有区块位置为(x/m,y/n)向下取整。得到区块坐标。区块坐标再转换为编号。想一想。坐标转编号公式应该是x*m+y+1,从一开始。
点赞 回复 分享
发布于 2023-11-16 01:39 广东
int n = len / gridLen,边长为len的表格可以看做二维数组,x / gridLen * n + y / gridLen + 1 算出来就是第几个格栅。
点赞 回复 分享
发布于 04-17 19:24 陕西

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务