using System.Collections.Generic;
public static void Main()
Console.WriteLine("FindPairs\n");
var res = FindPairs(new int[]{-1, -1, 1, 1}, 0);
Console.WriteLine("result: ======================= >{0}", res);
public static int FindPairs(int[] nums, int k)
var x = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++)
Console.WriteLine("******** {0},k + nums[i]: {1}, nums[i] - k: {2}, x.ContainsKey(k + nums[i]): {3}, x.ContainsKey(nums[i] - k): {4} \n\n ", nums[i], k + nums[i], nums[i] - k, x.ContainsKey(k + nums[i]), x.ContainsKey(nums[i] - k));
if (x.ContainsKey(k + nums[i]))
Console.WriteLine("x[k + nums[i]]: {0}", x[k + nums[i]]);
if ((!x.ContainsKey(x[k + nums[i]]) || (x.ContainsKey(x[k + nums[i]]) && x[k + nums[i]] != nums[i])) && (!x.ContainsKey(nums[i]) || (x.ContainsKey(nums[i]) && x[nums[i]] != k + nums[i])))
x[k + nums[i]] = nums[i];
Console.WriteLine("o~o");
Console.WriteLine("ret >>> {0}, !!!!! pair: (key:{1}, value:{2}) !!!!! ", ret, k + nums[i], nums[i]);
Console.WriteLine("o~o");
if (x.ContainsKey(nums[i] - k))
if ((!x.ContainsKey(x[nums[i] - k]) || (x.ContainsKey(x[nums[i] - k]) && x[nums[i] - k] != nums[i])) && (!x.ContainsKey(nums[i]) || (x.ContainsKey(nums[i]) && x[nums[i]] != nums[i] - k)))
x[nums[i] - k] = nums[i];
Console.WriteLine("o~o");
Console.WriteLine("ret >>> {0}, !!!!! pair: (key:{1}, value:{2}) !!!!! ", ret, nums[i] - k, nums[i]);
Console.WriteLine("o~o");
if (!x.ContainsKey(nums[i]))
x.Add(nums[i], int.MinValue);