每日一练55——Java找到最近的平方数(8kyu)

题目

你的任务是找到一个正整数n的最近的平方数,nearest_sq(n)。

测试用例:

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;

public class NearestSqTest {
    @Test
    public void basicTests() {
         assertEquals(1, CodeWarsMath.nearestSq(1));
         assertEquals(1, CodeWarsMath.nearestSq(2));
         assertEquals(9, CodeWarsMath.nearestSq(10));
         assertEquals(121, CodeWarsMath.nearestSq(111));
         assertEquals(10000, CodeWarsMath.nearestSq(9999));
    }
}

解题

My

我的笨方法再现江湖:

思路:
1.i从1开始方,直到i方大于n
2.再判断i方和(i-1)方相对n的差值大小
3.确定最接近的方值m

public class CodeWarsMath {
    public static int nearestSq(final int n) {
        int m = 0;
        for (int i = 1; i <= n; i++) {
            if (i * i > n) {
                if ((i * i - n) > (n - ((i - 1) * (i - 1)))) {
                    m = (i - 1) * (i - 1);
                    break;
                } else {
                    m = i * i;
                    break;
                }
            } else if (i * i == n) {
                m = i * i;
                break;
            }
        }
        return m;
    }
}

高手:

一句话

public class CodeWarsMath {
  public static int nearestSq(final int n){
    return (int) Math.pow(Math.round(Math.sqrt(n)),2);
  }
}

思路:
1.sqrt开方,即返回正确舍入的 double 值的正平方根;
2.round,传入double返回最接近参数的 long;
3.pow(x,y)即x的y次方。

后记

Math类挺好用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,417评论 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,054评论 0 2
  • sì 支zhī茶chá 对duì 酒jiǔ,赋fù 对duì 诗shī,燕yàn子zi 对duì 莺yīng 儿é...
    每个人的孟母堂阅读 1,265评论 0 6
  • 来到济南 来到济南 一定要去趟 大明湖,趵突泉 杨柳荫浓的湖岸 在每一处风景中凭栏 仔细寻觅,哪里 是我母亲童年的...
    蓟门闲客阅读 184评论 0 0
  • 第11天 读书笔记 我们的内在不是统一的。没有一个随时随地都在的“我”。我们的内在有一群“我”,它们是分裂的。每一...
    绿兔子000阅读 759评论 2 0