fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class Test
  6. {
  7.  
  8. public static void Main()
  9. {
  10. var list1 = new List<int>() { 1, 2, 3, 4 };
  11. var list2 = new List<int>() { 2, 3, 5, 6, 7, 8 };
  12. var list3 = new List<int>() { 3, 4, 5 };
  13. var all = new List<List<int>>() { list1, list2, list3 };
  14.  
  15. int min = all.Min(l => l.Min());
  16. var max = all.Max(l => l.Max());
  17. int count = max - min + 1;
  18.  
  19. List<int?> l1Result = new List<int?>(count);
  20. List<int?> l2Result = new List<int?>(count);
  21. List<int?> l3Result = new List<int?>(count);
  22.  
  23. foreach (int val in Enumerable.Range(min, count))
  24. {
  25. if (list1.BinarySearch(val) >= 0)
  26. l1Result.Add(val);
  27. else
  28. l1Result.Add(new Nullable<int>());
  29.  
  30. if (list2.BinarySearch(val) >= 0)
  31. l2Result.Add(val);
  32. else
  33. l2Result.Add(new Nullable<int>());
  34.  
  35. if (list3.BinarySearch(val) >= 0)
  36. l3Result.Add(val);
  37. else
  38. l3Result.Add(new Nullable<int>());
  39. }
  40.  
  41. Console.WriteLine(string.Join(",", l1Result.Select(i => !i.HasValue ? "NULL" : i.Value.ToString()).ToArray()));
  42. Console.WriteLine(string.Join(",", l2Result.Select(i => !i.HasValue ? "NULL" : i.Value.ToString()).ToArray()));
  43. Console.WriteLine(string.Join(",", l3Result.Select(i => !i.HasValue ? "NULL" : i.Value.ToString()).ToArray()));
  44. }
  45. }
Success #stdin #stdout 0.05s 38256KB
stdin
Standard input is empty
stdout
1,2,3,4,NULL,NULL,NULL,NULL
NULL,2,3,NULL,5,6,7,8
NULL,NULL,3,4,5,NULL,NULL,NULL