Ideone.com requires JavaScript to work.
fork(4) download loading...
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace Interview_ConsecutiveSequence
  5. {
  6. class Program
  7. {
  8. public static int GetMaxLengthConsecutiveSequence(int[] numbers)
  9. {
  10. HashSet<int> set = BuildHashSet(numbers);
  11. return AnalyzeHashSet(set);
  12. }
  13. private static HashSet<int> BuildHashSet(int[] numbers)
  14. {
  15. var set = new HashSet<int>();
  16. foreach(int number in numbers)
  17. {
  18. set.Add(number);
  19. }
  20. return set;
  21. }
  22. private static int AnalyzeHashSet(HashSet<int> set)
  23. {
  24. int maxCount = 0;
  25. while(set.Count > 0)
  26. {
  27. int number = set.First();
  28. int count = 0;
  29. int toDelete = number;
  30. while(set.Remove(toDelete))
  31. {
  32. count++;
  33. toDelete++;
  34. }
  35. toDelete = number - 1;
  36. while(set.Remove(toDelete))
  37. {
  38. count++;
  39. toDelete--;
  40. }
  41. if(count > maxCount)
  42. {
  43. maxCount = count;
  44. }
  45. }
  46. return maxCount;
  47. }
  48. private static void Test(string testName, int[] numbers, int expected)
  49. {
  50. if (GetMaxLengthConsecutiveSequence(numbers) == expected)
  51. {
  52. Console.WriteLine(string.Format("{0} passed.", testName));
  53. }
  54. else
  55. {
  56. Console.WriteLine(string.Format("{0} FAILED.", testName));
  57. }
  58. }
  59. private static void Test1()
  60. {
  61. int[] numbers = { 1, 300, 3, 2, 101, 4, 102 };
  62. int expected = 4;
  63. Test("test1", numbers, expected);
  64. }
  65. private static void Test2()
  66. {
  67. int[] numbers = { 1, 2, 3, 4, 5 };
  68. int expected = 5;
  69. Test("test2", numbers, expected);
  70. }
  71. private static void Test3()
  72. {
  73. int[] numbers = { 5, 4, 3, 2 };
  74. int expected = 4;
  75. Test("test3", numbers, expected);
  76. }
  77. private static void Test4()
  78. {
  79. int[] numbers = { 1, 3, 2, 4, 5, 19, 18, 17, 16 };
  80. int expected = 5;
  81. Test("test4", numbers, expected);
  82. }
  83. private static void Test5()
  84. {
  85. int[] numbers = { 1, 6, 3, 5, 9, 7 };
  86. int expected = 3;
  87. Test("test5", numbers, expected);
  88. }
  89. static void Main(string[] args)
  90. {
  91. Test1();
  92. Test2();
  93. Test3();
  94. Test4();
  95. Test5();
  96. }
  97. }
  98. }
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpuYW1lc3BhY2UgSW50ZXJ2aWV3X0NvbnNlY3V0aXZlU2VxdWVuY2UKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHB1YmxpYyBzdGF0aWMgaW50IEdldE1heExlbmd0aENvbnNlY3V0aXZlU2VxdWVuY2UoaW50W10gbnVtYmVycykKICAgICAgICB7CiAgICAgICAgICAgIEhhc2hTZXQ8aW50PiBzZXQgPSBCdWlsZEhhc2hTZXQobnVtYmVycyk7CiAgICAgICAgICAgIHJldHVybiBBbmFseXplSGFzaFNldChzZXQpOwogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaFNldDxpbnQ+IEJ1aWxkSGFzaFNldChpbnRbXSBudW1iZXJzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHNldCA9IG5ldyBIYXNoU2V0PGludD4oKTsKICAgICAgICAgICAgZm9yZWFjaChpbnQgbnVtYmVyIGluIG51bWJlcnMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNldC5BZGQobnVtYmVyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHNldDsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgc3RhdGljIGludCBBbmFseXplSGFzaFNldChIYXNoU2V0PGludD4gc2V0KQogICAgICAgIHsKICAgICAgICAgICAgaW50IG1heENvdW50ID0gMDsKICAgICAgICAgICAgd2hpbGUoc2V0LkNvdW50ID4gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IG51bWJlciA9IHNldC5GaXJzdCgpOwogICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICAgICAgICAgIGludCB0b0RlbGV0ZSA9IG51bWJlcjsKCiAgICAgICAgICAgICAgICB3aGlsZShzZXQuUmVtb3ZlKHRvRGVsZXRlKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgIHRvRGVsZXRlKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdG9EZWxldGUgPSBudW1iZXIgLSAxOwogICAgICAgICAgICAgICAgd2hpbGUoc2V0LlJlbW92ZSh0b0RlbGV0ZSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICB0b0RlbGV0ZS0tOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmKGNvdW50ID4gbWF4Q291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWF4Q291bnQgPSBjb3VudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG1heENvdW50OwogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBUZXN0KHN0cmluZyB0ZXN0TmFtZSwgaW50W10gbnVtYmVycywgaW50IGV4cGVjdGVkKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEdldE1heExlbmd0aENvbnNlY3V0aXZlU2VxdWVuY2UobnVtYmVycykgPT0gZXhwZWN0ZWQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Gb3JtYXQoInswfSBwYXNzZWQuIiwgdGVzdE5hbWUpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Gb3JtYXQoInswfSBGQUlMRUQuIiwgdGVzdE5hbWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBUZXN0MSgpCiAgICAgICAgewogICAgICAgICAgICBpbnRbXSBudW1iZXJzID0geyAxLCAzMDAsIDMsIDIsIDEwMSwgNCwgMTAyIH07CiAgICAgICAgICAgIGludCBleHBlY3RlZCA9IDQ7CiAgICAgICAgICAgIFRlc3QoInRlc3QxIiwgbnVtYmVycywgZXhwZWN0ZWQpOwogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBUZXN0MigpCiAgICAgICAgewogICAgICAgICAgICBpbnRbXSBudW1iZXJzID0geyAxLCAyLCAzLCA0LCA1IH07CiAgICAgICAgICAgIGludCBleHBlY3RlZCA9IDU7CiAgICAgICAgICAgIFRlc3QoInRlc3QyIiwgbnVtYmVycywgZXhwZWN0ZWQpOwogICAgICAgIH0KCgogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgVGVzdDMoKQogICAgICAgIHsKICAgICAgICAgICAgaW50W10gbnVtYmVycyA9IHsgNSwgNCwgMywgMiB9OwogICAgICAgICAgICBpbnQgZXhwZWN0ZWQgPSA0OwogICAgICAgICAgICBUZXN0KCJ0ZXN0MyIsIG51bWJlcnMsIGV4cGVjdGVkKTsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgVGVzdDQoKQogICAgICAgIHsKICAgICAgICAgICAgaW50W10gbnVtYmVycyA9IHsgMSwgMywgMiwgNCwgNSwgMTksIDE4LCAxNywgMTYgfTsKICAgICAgICAgICAgaW50IGV4cGVjdGVkID0gNTsKICAgICAgICAgICAgVGVzdCgidGVzdDQiLCBudW1iZXJzLCBleHBlY3RlZCk7CiAgICAgICAgfQoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFRlc3Q1KCkKICAgICAgICB7CiAgICAgICAgICAgIGludFtdIG51bWJlcnMgPSB7IDEsIDYsIDMsIDUsIDksIDcgfTsKICAgICAgICAgICAgaW50IGV4cGVjdGVkID0gMzsKICAgICAgICAgICAgVGVzdCgidGVzdDUiLCBudW1iZXJzLCBleHBlY3RlZCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICBUZXN0MSgpOwogICAgICAgICAgICBUZXN0MigpOwogICAgICAgICAgICBUZXN0MygpOwogICAgICAgICAgICBUZXN0NCgpOwogICAgICAgICAgICBUZXN0NSgpOwogICAgICAgIH0KICAgIH0KfQo=
Success #stdin #stdout 0.04s 33952KB
stdin
Standard input is empty
stdout
test1 passed.
test2 passed.
test3 passed.
test4 passed.
test5 passed.
https://ideone.com/0oRqLq
Get the max length of a conscutive sequence out of an array
language:
C# (gmcs 5.20.1)
created:
12 years ago
visibility:
public

Share or Embed source code

Discover > Sphere Engine API

The brand new service which powers Ideone!

Discover > IDE Widget

Widget for compiling and running the source code in a web browser!

AltStyle によって変換されたページ (->オリジナル) /