关注
private long temp(long n){
//平方根
long len = (long)Math.sqrt(n);
//先使用n视图拼出正方形
/**
* (len-1)个 2火柴,一个4火柴,这是一列,共有len个这样的列
*/
long res = len*(4+(len-1)*2);
//还需要多少个
long other = n-len*len;
if(other==0)return res;
if(other<=len){
//只够补一行/列
res+=3+(other-1)*2;
}else {
res+=3+(len-1)*2;//补一行
other-=len;
res+=3+(other-1)*2;//补一列
}
return res;
}
我解释一下帖主第三题的几行代码:long len = (long)Math.sqrt(n);先视图用用n个小正方行拼出最大程度的大正方形,所以开方。long res = len*(4+(len-1)*2); 在纸上画一下,len-1个“直角火柴”(2),一矩形火柴(4),组成一列,共有len个这样的列,而且(4)重合的部分会补上最后的边。long other = n-len*len; 统计还剩下几个(最多能够拼出一个完整的行或者列)。res+=3+(other-1)*2;剩下的小方块数量够填充多长的列/行。
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
02-09 14:23
西安建筑科技大学 数据分析师 点赞 评论 收藏
分享
今天 14:36
门头沟学院 前端工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
10435次浏览 177人参与
# 牛友的春节生活 #
7535次浏览 157人参与
# 春节前,你还在投简历吗? #
14013次浏览 163人参与
# 从夯到拉,锐评职场mentor #
5018次浏览 79人参与
# 牛客AI体验站 #
14791次浏览 267人参与
# 春节提前走,你用什么理由请假? #
10288次浏览 245人参与
# 实习到现在,你最困惑的一个问题 #
4477次浏览 128人参与
# 备战春招/暑实,现在应该做什么? #
4958次浏览 153人参与
# 工作后,你落下了哪些病根 #
32355次浏览 277人参与
# 怎么给家人解释你的工作? #
51553次浏览 208人参与
# 没有家庭托举的我是怎么找工作的 #
35699次浏览 266人参与
# 机械制造秋招总结 #
103252次浏览 886人参与
# 距离春招还有一个月,你现在是什么开局? #
6884次浏览 113人参与
# 上班摸鱼,你都在干些什么? #
39080次浏览 246人参与
# 今年秋招你收到了多少封邮件? #
37526次浏览 277人参与
# 聊聊Agent开发 #
24772次浏览 596人参与
# 暑期实习什么时候投? #
7103次浏览 165人参与
# 什么是优秀的实习经历 #
35930次浏览 387人参与
# 面试经验谈 #
406386次浏览 7217人参与
# 推荐一个值得做的AI项目 #
6764次浏览 180人参与