![]() |
1
75
这对你的案子更好。 如果可能的话,也可以选择开关箱
编辑:
|
![]() |
2
160
功能上:(用Scala演示)
|
![]() |
3
88
使用
|
![]() |
4
82
你当然不会得到一个确切的结果,但如果你能容忍一些偏差,这是一个非常有效的选择。由于的“保持未修改”行为将值转换为原始函数,其中
对于具有以下系数的45次多项式,
,您将得到一条完美拟合的曲线:
如你所见,在0到200*的整个范围内,你得到的1范数误差只有1.73!
*的结果
|
![]() |
5
51
|
![]() |
6
23
请参阅中的“是否多重返回”讨论 org.life.java's answer . |
![]() |
7
17
如果您有几十个或几百个迭代要检查,那么我可以很容易地看到转到一些for循环,但老实说,对于您所做的少数比较,请坚持使用If,然后继续。没那么难看。 |
![]() |
8
14
|
![]() |
9
12
更新:已修复。先前的解决方案给出了精确值(10,22,51…)的错误答案。对于if val<10,此值默认为6
|
![]() |
10
11
我还有一个版本给你。我真的不认为它是最好的,因为它以“性能”的名义增加了不必要的复杂性,而我100%确信这个函数永远不会成为性能猪(除非有人在紧循环中计算大小一百万次…)。 但我呈现它只是因为 我觉得执行硬编码的二进制搜索挺有趣的 它返回的结果不超过3次,而不是6次 和原来的帖子一样。返回语句也是按大小排序的,这有助于理解和/或修改。
|
![]() |
11
7
哪里
编辑:起初我不知道这个问题是关于Java的。此表达式在java中无效,但在C/C++中是有效的。我将留下答案,因为有些用户觉得它很有用。 |
![]() |
12
5
我的评论能力还没有打开,希望没有人会说“正确”的基础上,我的答案。。。 美化丑陋的代码可以/应该被定义为试图实现:
综观所有关于这个问题的评论,在我写作的时候,似乎只有org.life.java网站提出了性能的问题(也许mfloryan也提出了一些“更长”的问题)。当然,在大多数情况下,举这个例子,不管你怎么写它,它都不应该承受明显的减速。 但是,通过嵌套条件并对条件进行优化排序,可以提高性能[值得一提的是,特别是在循环的情况下]。
|
![]() |
13
5
这是一个面向对象的解决方案,一个名为
语法:
Edit:最终用一个更高效(更短)的版本替换了map()方法。我知道:一个搜索分区的版本对于大型数组来说仍然会更快,但是对不起:我太懒了。
当然,所有这些特性都可以很容易地删除,但是代码将不那么完整、不太可用或不太稳定。 |
![]() |
14
4
有没有一个基本的数学规则呢?如果是这样的话,你应该使用它:但前提是它来自于问题领域,而不仅仅是一些恰好适合案例的公式。 |
![]() |
15
3
|
![]() |
16
3
你可以用ARM代码重写它。在最坏的情况下只有7个周期和164个字节。希望有帮助。(注:未经测试)
|
![]() |
17
2
以及存储过程或函数:
|
![]() |
18
1
请原谅我没有把整件事都写出来。 当然,你得确保v在射程内。 我能想到这样做的唯一原因是,如果你要创建一次数组,并在一个必须非常快速的应用程序中使用它数千次。我提到它是一个在内存和速度(不是以前的问题)以及设置时间和速度之间进行权衡的例子。 |
![]() |
19
1
显而易见的答案是使用Groovy:
一句话总是好的。对于v<=10的未定义情况,返回7。 |
![]() |
20
0
这是我的代码示例,使用SortedSet。你可以初始化一次边界。
然后以这种方式对v的多个值(和初始化的大小)使用它
|
![]() |
21
0
它现在变得更加灵活,可以按降序处理任何给定的数组,并且该方法将找到值“v”所属的索引。
|
![]() |
22
0
如果你真的想用最快的大O复杂度时间解决这个问题,这个答案就是常数查找。
随后
我们在这里做的是标记v在范围内的所有可能结果,以及它们落在哪里,然后我们只需要测试边界条件。 这样做的问题是它使用了更多的内存,当然如果maxBoundary大得多,它的空间效率会非常低(初始化也需要更长的时间)。 这有时可能是最好的解决办法。 |
![]() |
23
0
为什么有人不建议转换语句。如果不是梯子,那就好得多。
|
![]() |
24
-1
|
![]() |
25
-1
还有另一种变化(比 George )
|