关注
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
相关推荐
04-03 13:58
上海大学 Java 
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 中美关税战对我们有哪些影响 #
8861次浏览 144人参与
# 工作经验重要还是工资重要? #
18483次浏览 262人参与
# 美团求职进展汇总 #
1994006次浏览 18542人参与
# 校招求职有谈薪空间吗 #
119005次浏览 1596人参与
# 找工作如何保持松弛感? #
11700次浏览 187人参与
# 多益网络求职进展汇总 #
9488次浏览 61人参与
# 新凯来求职进展汇总 #
17305次浏览 70人参与
# 如果没找到工作,考公是你的退路吗 #
18969次浏览 210人参与
# 海康威视求职进展 #
58419次浏览 319人参与
# 美的集团工作体验 #
18480次浏览 56人参与
# 第一份工作应该只看薪资吗 #
125235次浏览 1390人参与
# 通信/硬件公司求职体验 #
101990次浏览 800人参与
# 通信硬件2024笔试面试经验 #
190038次浏览 1780人参与
# 你的论文盲审过了没? #
99986次浏览 1463人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
69355次浏览 594人参与
# HR问:你期望的薪资是多少?如何回答 #
24757次浏览 460人参与
# 水滴求职进展汇总 #
2976次浏览 21人参与
# 关于春招你都做了哪些准备? #
80841次浏览 536人参与
# 文科生还参加今年的春招吗 #
8346次浏览 89人参与
# 滴滴工作体验 #
18174次浏览 89人参与