考虑这种方法:
public static int[] countPairs(int min, int max) {
int lastIndex = primes.size() - 1;
int i = 0;
int howManyPairs[] = new int[(max-min)+1];
for(int outer : primes) {
for(int inner : primes.subList(i, lastIndex)) {
int sum = outer + inner;
if(sum > max)
break;
if(sum >= min && sum <= max)
howManyPairs[sum - min]++;
}
i++;
}
return howManyPairs;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我必须计算min和max之间的每个数字可以表示为两个素数之和的次数.
primes是一个ArrayList,所有素数在2 到2000000之间.在这种情况下,min是1000000并且max是2000000,这就是素数到2000000的原因.
我的方法很好,但这里的目标是更快地做点什么.
我的方法需要两个循环,一个在另一个内部,它使我的算法成为O(n²).它像泡泡一样糟透了.
如何重写我的代码以获得更好的复杂性,如O(nlogn)?
最后一件事:我用Java编写代码,但您的回复也可以是Python,VB.Net,C#,Ruby,C,甚至只是英文解释.
我有以下情况:
let private runStatement (vars : Map<identifier, value>) stmt =
match stmt with
| Assignment (id, expr) -> runAssignment vars id expr
| Print exprs -> runPrint vars exprs
| Read id -> runRead vars id
| If (cond, stmts) -> runIf vars cond stmts
let rec private runStatements vars stmts =
match stmts with
| stmt::rest ->
let newVars = runStatement vars stmt
runStatements newVars rest
| [] -> vars
let private runIf vars conditionalValue statements =
match conditionalValue …Run Code Online (Sandbox Code Playgroud) 我正在寻找与Python的{dict} .pop()等效的JavaScript。我看到JS具有shift()和pop(),但是它们被硬编码为Array中的第一个和最后一个位置。是否可以在其中指定对象位置的等效项?
我可以在Python中执行的示例:
>>> foxx = {'player':{'name':'Jimmie','last':'Foxx','number':3}, 'date':'2018-01-01', 'homeruns':3,'hits':4}
>>> player = foxx.pop('player')
>>> foxx
{'date': '2018-01-01', 'homeruns': 3, 'hits': 4}
>>> player
{'name': 'Jimmie', 'last': 'Foxx', 'number': 3}
Run Code Online (Sandbox Code Playgroud) 这段代码
open System.Threading
let duration = 1000
module SequentialExample =
let private someTask item =
printfn "oh god why"
Thread.Sleep(duration)
item + " was computed"
let private items = [
"foo"
"bar"
"baz"
]
let getComputedItems =
printfn "heh"
[for item in items -> someTask item]
|> Array.ofList
module ParallelExample =
let private someTask item =
printfn "that's ok"
Thread.Sleep(duration)
item + " was computed"
let private items = [
"foo"
"bar"
"baz"
]
let getComputedItems =
Async.Parallel [for item …Run Code Online (Sandbox Code Playgroud) 给出以下代码
import 'dart:async';
var total = 0;
final iterations = 10000000;
Future add() async {
print('starting add -> $total');
for (var i = 0; i < iterations; i++) {
total += 1;
}
print('ending add -> $total');
}
Future sub() async {
print('starting sub -> $total');
for (var i = 0; i < iterations; i++) {
total -= 1;
}
print('ending sub -> $total');
}
void main(List<String> args) {
add();
sub();
print('done');
}
Run Code Online (Sandbox Code Playgroud)
它会生成以下输出
done
starting add -> 0
ending …Run Code Online (Sandbox Code Playgroud) 创建了一个应用程序,并试图创建webhook,但在droplist中,'Page'对象没有显示,只有'User','Application','Permission','Native Components'和'Certificate Transperancy'.
我们如何为Page对象创建webhook?
以下片段
local function foo ()
print('inside foo')
bar()
end
local function bar ()
print('inside bar')
end
foo()
Run Code Online (Sandbox Code Playgroud)
结果在以下输出
inside foo
lua: teste.lua:3: attempt to call global 'bar' (a nil value)
stack traceback:
teste.lua:3: in function 'foo'
teste.lua:10: in main chunk
[C]: ?
Run Code Online (Sandbox Code Playgroud)
如果我local从bar声明中删除修饰符,那么它会按预期工作,输出
inside foo
inside bar
Run Code Online (Sandbox Code Playgroud)
我怎样才能bar在内部foo保持两者为local?
f# ×2
python ×2
.net ×1
algorithm ×1
asynchronous ×1
dart ×1
ecmascript-6 ×1
facebook ×1
java ×1
javascript ×1
lua ×1
math ×1
optimization ×1