Guest User

Untitled

a guest
Dec 18th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. using System;
  2.  
  3. class Solution
  4. {
  5. /// <summary>
  6. /// code review on Dec. 15, 2017
  7. /// </summary>
  8. /// <param name="arr"></param>
  9. /// <returns></returns>
  10. public static int IndexEqualsValueSearch(int[] arr) // [0, 1, 2, 3]
  11. {
  12. if (arr == null || arr.Length == 0) // false
  13. {
  14. return -1;
  15. }
  16.  
  17. var length = arr.Length; // 4
  18.  
  19. return binarySearch(arr, 0, length - 1); // 0, 0 , 3
  20. }
  21.  
  22. /// <summary>
  23. /// time complexity is O(n), space complexity is O(1)
  24. /// </summary>
  25. /// <param name="numbers"></param>
  26. /// <param name="start"></param>
  27. /// <param name="end"></param>
  28. /// <returns></returns>
  29. private static int binarySearch(int[] numbers, int start, int end) // logn -
  30. {
  31. if (start > end) // false
  32. {
  33. return -1;
  34. }
  35.  
  36. var middle = start + (end - start) / 2; // 1
  37. var middleValue = numbers[middle]; // 0
  38. // base case
  39. if (middleValue == middle) //
  40. {
  41. // You need to make some changes here
  42. // You definitely know 1 index
  43. // [0 0 0 0 0]
  44. // middle = 2
  45. // [0 0]
  46. if (middle > 0 && numbers[middle - 1] == (middle -1))
  47. {
  48. return binarySearch(numbers, start, middle - 1);
  49. }
  50. else
  51. {
  52. return middle; // 1 -> lowest one - bug fix
  53. }
  54. }
  55. else if (middleValue < middle)
  56. {
  57. start = middle + 1;
  58. }
  59. else
  60. {
  61. end = middle - 1;
  62. }
  63.  
  64. return binarySearch(numbers, start, end);
  65. }
  66.  
  67. static void Main(string[] args)
  68. {
  69. }
  70. }
  71.  
  72. // [-8, 0, 2, 5] - distinct ascending -> increment at least 1
  73. // [0, 1, 2, 3] -> ascending order -> increment 1
  74. // arr[i] - i -> array not descending
  75. // arr[i] <= arr[i] if i < j
  76. // [0, 1, 2, 3]
  77. // newArray = arr[i] - i , saying that this array is sorted,
  78. // [0,0,0,0] -> sorted,
  79. // argument if it is sorted, binary search
  80. // O(logn) given value 0, find index - arr[i] - i = 0,
  81. // space O(1)
Add Comment
Please, Sign In to add comment