Ich versuche, die Anzahl der Paare in einem Array so zu zählen, dass jedes Paar die Summe einer ganzen Zahl gibt!Die Anzahl der verschiedenen Paare von Ganzzahlen, die zu einer Ganzzahl summieren
habe ich den folgenden Code:
public static int SumPairs(Integer []input, int k){
Map<Integer, Integer> pairs = new HashMap<Integer, Integer>();
int tmp=0;
//System.out.println(pairs.toString());
for(int i=0;i<input.length;i++){
if(pairs.containsKey(input[i])){
System.out.println(pairs.containsKey(input[i]));
System.out.println(input[i] +", "+ pairs.get(input[i]));
input[i]=0;
tmp++;
}
else
pairs.put(k-input[i], input[i]);
}return tmp;
}
das Problem ist; zum Beispiel, wenn mein Array 1 2 2 2 3 4 4 4
und sum = 5
es wie folgt
(4,1)
(4,1)
(4,1)
(3,2)
berechnen möchte ich die Methode von der Verwendung einer Anzahl mehr als einmal verhindern !! so dass der Ausgang
(4,1)
(3,2)
Ist die Eingangsanordnung garantiert aufsteigend sortiert werden, wo der Unterschied zwischen einem Element und seinem Vorgänger ist nie größer als eins (Ihr Beispiel Array schlägt damit)? – Calculator
Normalerweise nein, das Array könnte in irgendeiner Reihenfolge sein, sollte ich es zuerst sortieren? –
Wenn die Eingabe unsortiert ist, sollte sie unsortiert bleiben. Es würde sonst die Laufzeitkomplexität erhöhen. Ich habe nur gefragt, weil es das Problem vereinfacht hätte. – Calculator