- static void Main(string[] args)
- {
- int[] arr = { 1, 3, 4, 2, 0, 5, 7, 3, 9 };
- int[] A = { 10001, 100050, 54, 80000 };
- int[] B = { -7, -4, 0, -3 };
- Stopwatch st1 = new Stopwatch();
- Stopwatch st2 = new Stopwatch();
- Stopwatch st3 = new Stopwatch();
- Stopwatch st4 = new Stopwatch();
- st1.Start();
- Console.WriteLine(Fun(arr));
- st1.Stop();
- Console.WriteLine(st1.ElapsedTicks);
- Console.WriteLine(Fun(A));
- Console.WriteLine(Fun(B));
- st2.Start();
- Console.WriteLine(Solution(arr));
- st2.Stop();
- Console.WriteLine(st2.ElapsedTicks);
- Console.WriteLine(Solution(A));
- Console.WriteLine(Solution(B));
- st3.Start();
- Console.WriteLine(Sol2(arr));
- st3.Stop();
- Console.WriteLine(st3.ElapsedTicks);
- Console.WriteLine(Sol2(A));
- Console.WriteLine(Sol2(B));
- st4.Start();
- Console.WriteLine(Sol3(arr));
- st4.Stop();
- Console.WriteLine(st4.ElapsedTicks);
- Console.WriteLine(Sol3(A));
- Console.WriteLine(Sol3(B));
- }
- static int Solution(int[] arr)
- {
- Array.Sort(arr);
- int[] S = arr.Where(x => !arr.Contains(x + 1) && x >= 0).ToArray();
- if (!arr.Contains(1)) return 1;
- return S.Min();
- }
- static int Fun(int[] arr)
- {
- while (arr.Max() < 1 || arr.Min() > 1) return 1;
- Array.Sort(arr);
- return arr.First(x => x >= 0 && !arr.Contains(x + 1)) + 1;
- }
- static int Sol2(int[] arr)
- {
- int minimum = Int32.MaxValue;
- if (!arr.Contains(1)) return 1;
- List<int> positives = new List<int>();
- foreach (int item in arr)
- {
- if (item > 0) positives.Add(item);
- }
- foreach (int item in positives)
- {
- if (!positives.Contains(item + 1) && item < minimum) minimum = item;
- }
- return minimum + 1;
- }
- static int Sol3(int[] A)
- {
- int minimum = Int32.MaxValue;
- if (!A.Contains(1)) return 1;
- foreach(int item in A)
- {
- if (item > 0 && !A.Contains(item + 1) && (item + 1) < minimum) minimum = item + 1;
- }
- return minimum;
- }
- }
- }