为了账号安全,请及时绑定邮箱和手机立即绑定

CodeWars算法 Twice linear 问题

CodeWars算法 Twice linear 问题

慕尼黑5688855 2019-03-20 18:13:37
折腾了两天了,一直只是通过测试,但是提交的时候会出错,代码效率太差。求大神指点...算法如下:*"Consider a sequence u where u is defined as follows:The number u(0) = 1 is the first one in u.For each x in u, then y = 2 x + 1 and z = 3 x + 1 must be in u too.There are no other numbers in u.Ex: u = [1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]1 gives 3 and 4, then 3 gives 7 and 10, 4 gives 9 and 13, then 7 gives 15 and 22 and so on..."*我的代码如下`public static int dblLinear(int n){    ArrayList<Long> arrayresult = new ArrayList<Long>();    arrayresult.add((long) 1);    //循环,生成这样的u[]数组。但是i太大的话,会超时    for (int i = 1; i <= 15; i++)    {        arrayresult = CreateArrayList(arrayresult);    }    System.out.println(arrayresult.toString());    long location = arrayresult.get(n);    return  (int)location;}public static ArrayList<Long> CreateArrayList(ArrayList<Long> resultArray){    ArrayList<Long> tmp = (ArrayList<Long>)resultArray.clone();    for (long single : resultArray)    {        //按照规则,生成y和z。        long y = single * 2 + 1;        long z = single * 3 + 1;        //看看y和z在不在数组里面,不在的话,添加进去。        if (resultArray.indexOf(y) == -1)        {            tmp.add(y);        }        if (resultArray.indexOf(z) == -1)        {            tmp.add(z);        }    }    Collections.sort(tmp);    return tmp;}public static void main(String[] args){    System.out.println(DoubleLinear.dblLinear(100));}`提示错误:"Process was terminated. It took longer than 10000ms to complete0 Passed"如果循环的i设置的小,那么数组里面的数字也不完整。归根到底,还是代码效率太差...求指导啊
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

function dblLinear(n) {

    // your code

    var arr=[1];

    var y=0;

    var z=0;

    while(arr.length<=n){

      if(arr[y]*2 +1 < arr[z] *3 +1){

        arr.push(arr[y]*2 +1);

        y++;

      }else if(arr[y]*2 +1 > arr[z] *3 +1){

        arr.push(arr[z]*3 +1);

        z++;

      }else{

        y++;

      }

    }

    return arr[n];

}

javascript写的。


查看完整回答
反对 回复 2019-04-17
  • 2 回答
  • 0 关注
  • 778 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信