Ich habe über ein folgendes Problem zu denken - es gibt zwei Arrays, und ich brauche Elemente nicht üblich, dass sie beide, zum Beispiel zu finden:Rubin - Finden Element nicht gemeinsam für zwei Arrays
a = [1,2,3,4]
b = [1,2,4]
Und die erwartete Antwort ist [3]
.
a.select { |elem| !b.include?(elem) }
Aber es gibt mir O(N ** 2)
Zeit:
ich so tun es Bisher habe. Ich bin sicher, es kann schneller erfolgen;)
Außerdem habe ich darüber nachgedacht, es irgendwie wie diese bekommen (eine Methode gegenüber &
verwendet, die gemeinsamen Elemente von 2 Arrays gibt):
a !& b #=> doesn't work of course
Eine andere Möglichkeit könnte sein, zwei Arrays hinzuzufügen und das einzigartige Element mit etwas ähnliches Verfahren wie uniq
zu finden, so dass:
[1,1,2,2,3,4,4].some_method #=> would return 3
'(a-b) | (ba) # => [3] 'Siehe http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-2D und beachte, dass es nicht kommutativ ist, dh generell' ab ! = ba' – iamnotmaynard
Das sollte sein: (ab) | (b-a) –
@ShawnBalestracci Richtig du bist. Ich hatte es sogar richtig in meine Testkonsole geschrieben, aber es falsch umgeschrieben. – iamnotmaynard