关注
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
相关推荐
投递华为等公司10个岗位 > 我的实习日记
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的2024牛客高光时刻 #
88890次浏览 1493人参与
# 学信网能看师兄师姐就业去向了 #
189520次浏览 537人参与
# 被同事甩锅了怎么办 #
14837次浏览 89人参与
# 实习,投递多份简历没人回复怎么办 #
2687824次浏览 36545人参与
# 入职第三天,晒晒你的工位 #
17064次浏览 98人参与
# 实习工作,你找得还顺利吗? #
282507次浏览 3645人参与
# 正在实习的你,有转正机会吗? #
327425次浏览 2670人参与
# 秋招你被哪家公司挂了? #
408896次浏览 3676人参与
# 运营来爆料 #
16552次浏览 201人参与
# 国企是春招机械人最好的去处吗 #
12891次浏览 75人参与
# 数据人的面试交流地 #
493331次浏览 8278人参与
# 你上一次加班是什么时候? #
31530次浏览 266人参与
# 硬件打工人的必备素养 #
11055次浏览 73人参与
# 简历中的项目经历要怎么写? #
103791次浏览 1685人参与
# 想实习转正,又想准备秋招,我该怎么办 #
559242次浏览 5552人参与
# 非技术岗简历怎么写 #
174507次浏览 2582人参与
# 晒一晒你收到的礼盒 #
16173次浏览 173人参与
# 大家都开始春招面试了吗 #
492795次浏览 6583人参与
# 你上一天班会花多少钱 #
21848次浏览 153人参与
# 过年期间可能会经历的尴尬瞬间 #
17030次浏览 185人参与