小编fat*_*tra的帖子

筛选优化

从自然数序列创建序列:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Run Code Online (Sandbox Code Playgroud)

除去每2在数第2步:

1 3 5 7 9 11 13 15 17 19 21 23
Run Code Online (Sandbox Code Playgroud)

删除3步中的每个第3个数字(从上一个序列开始):

1 3 7 9 13 15 19 21 
Run Code Online (Sandbox Code Playgroud)

删除4步中的每4个数字(从上一个序列开始):

1 3 7 13 19
Run Code Online (Sandbox Code Playgroud)

等等...现在,我们可以说,序列的第4个数字将是13.

这里有定义和正确的解决方案:http://oeis.org/A000960

我的任务是找到序列的第1000个成员.我已经为此编写了一个算法,但我觉得它很慢(当我尝试使用第10,000个成员时需要大约13秒).它的作用是:

  • number每步增加2,因为我们知道没有偶数.

  • counters数组中,我存储每个步骤的索引.如果数字是第x步中的xth,我必须删除它,例如第3步中的数字5.我为下一步启动了一个计数器.

    ArrayList<Long> list …
    Run Code Online (Sandbox Code Playgroud)

algorithm optimization

7
推荐指数
1
解决办法
258
查看次数

从时间戳中剥离时间

为什么我不能以这种方式清除时间戳中的时间:

one day == 24 * 3600 * 1000 == 86400000 milliseconds.

long ms = new Date().getTime();  //Mon Sep 03 10:06:59 CEST 2012
Date date = new Date(ms - (ms % 86400000));
Run Code Online (Sandbox Code Playgroud)

为什么是这个Mon Sep 03 02:00:00 CEST 2012而不是Mon Sep 03 00:00:00 CEST 2012

java timestamp

1
推荐指数
1
解决办法
2089
查看次数

标签 统计

algorithm ×1

java ×1

optimization ×1

timestamp ×1