Laissez-moi vous aider à le comprendre avec un exemple de "l'algorithme du codaddict".
' Dictionnaire en C# " est Hashmap en Java' dans un univers parallèle.
Certaines mises en œuvre sont différentes. Voir l'exemple ci-dessous pour mieux comprendre.
Déclarer un HashMap Java :
Map<Integer, Integer> pairs = new HashMap<Integer, Integer>();
Déclarer un dictionnaire C# :
Dictionary<int, int> Pairs = new Dictionary<int, int>();
Obtenir une valeur à partir d'un emplacement :
pairs.get(input[i]); // in Java
Pairs[input[i]]; // in C#
Définition d'une valeur à l'emplacement :
pairs.put(k - input[i], input[i]); // in Java
Pairs[k - input[i]] = input[i]; // in C#
Un exemple général peut être observé à partir de l'algorithme de Codaddict ci-dessous.
L'algorithme du codaddict en Java :
import java.util.HashMap;
public class ArrayPairSum {
public static void printSumPairs(int[] input, int k)
{
Map<Integer, Integer> pairs = new HashMap<Integer, Integer>();
for (int i = 0; i < input.length; i++)
{
if (pairs.containsKey(input[i]))
System.out.println(input[i] + ", " + pairs.get(input[i]));
else
pairs.put(k - input[i], input[i]);
}
}
public static void main(String[] args)
{
int[] a = { 2, 45, 7, 3, 5, 1, 8, 9 };
printSumPairs(a, 10);
}
}
L'algorithme du Codaddict en C#
using System;
using System.Collections.Generic;
class Program
{
static void checkPairs(int[] input, int k)
{
Dictionary<int, int> Pairs = new Dictionary<int, int>();
for (int i = 0; i < input.Length; i++)
{
if (Pairs.ContainsKey(input[i]))
{
Console.WriteLine(input[i] + ", " + Pairs[input[i]]);
}
else
{
Pairs[k - input[i]] = input[i];
}
}
}
static void Main(string[] args)
{
int[] a = { 2, 45, 7, 3, 5, 1, 8, 9 };
//method : codaddict's algorithm : O(n)
checkPairs(a, 10);
Console.Read();
}
}