关注
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
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享
05-13 10:39
天津大学 搜索算法 
点赞 评论 收藏
分享
06-27 17:50
深圳大学 供应链其他 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习,不懂就问 #
3579次浏览 68人参与
# 小米提前批笔试难吗 #
34151次浏览 358人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
13808次浏览 138人参与
# 26届校招投递进展 #
31957次浏览 247人参与
# 央国企投递记录 #
88206次浏览 1362人参与
# 为了找工作你花了哪些钱? #
28275次浏览 268人参与
# 神州信息工作体验 #
11670次浏览 57人参与
# 来聊聊你目前的求职进展 #
634366次浏览 6747人参与
# 小米硬件提前批进度交流 #
168200次浏览 1523人参与
# 校招第一份工作你干了多久? #
86089次浏览 394人参与
# 外包能不能当跳板? #
34523次浏览 221人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61400次浏览 490人参与
# 设计人的面试记录 #
123532次浏览 1341人参与
# 打工人的精神状态 #
49895次浏览 864人参与
# 硬件人你反向读研了吗 #
42556次浏览 637人参与
# 你今年的保底offer是哪家 #
118490次浏览 538人参与
# 大疆的机械笔试比去年难吗 #
72947次浏览 618人参与
# 怎么评价今年的华为 #
129080次浏览 568人参与
# 如何缓解入职前的焦虑 #
192506次浏览 1340人参与
# 硬件人秋招的第一个offer #
78001次浏览 1149人参与
# 如果中了500万,你会离职吗? #
84398次浏览 652人参与