Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. class Solution {
  5. public int[] searchRange(int[] nums, int target) {
  6. List<Integer> ans = findFirst(nums, target, 0, nums.length - 1, nums.length - 1);
  7. if(ans.size() == 0) {
  8. int[] a = {-1,-1};
  9. return a;
  10. } else {
  11. int[] a = {ans.get(0), ans.get(1)};
  12. return a;
  13. }
  14. }
  15.  
  16. public List<Integer> findFirst(int[] nums, int target, int begin, int end, int length) {
  17. int mid = (begin + end)/2;
  18. List<Integer> ans = new ArrayList();
  19. if(begin > end || (begin == end && target != nums[mid])) {
  20. return ans;
  21. } else if(target > nums[mid]){
  22. return findFirst(nums, target, mid+1, end, length);
  23. } else if(target < nums[mid]) {
  24. return findFirst(nums, target, begin, mid-1, length);
  25. } else {
  26. int right = mid;
  27. int left = mid;
  28. int lefts = mid;
  29. int rights = mid;
  30. System.out.println("Right");
  31. System.out.println("Left");
  32. System.out.println(mid);
  33. for(int i = 1 ; mid + i <= length; i = i*2) {
  34. System.out.println("Rights");
  35. if(nums[mid + i] == target) {
  36. System.out.println("Rightss");
  37. right = mid + i;
  38. rights = right;
  39. continue;
  40. } else break;
  41.  
  42.  
  43. /*else {
  44. System.out.println("Right");
  45. System.out.println(right);
  46. while ((right <= length) && nums[right] == target) {
  47. rights = right;
  48. right++;
  49. }
  50. break;
  51. }*/
  52. }
  53.  
  54. while ((right <= length) && nums[right] == target) {
  55. rights = right;
  56. right++;
  57. }
  58. for(int i = 1 ; mid - i >= 0; i = i*2) {
  59. System.out.println("LeftLeft");
  60. System.out.println(left);
  61. if(nums[mid - i] == target) {
  62. left = mid - i;
  63. lefts = left;
  64. System.out.println("Leftsss");
  65. System.out.println(lefts);
  66. continue;
  67. } else break;
  68. /*else {
  69. System.out.println("Left");
  70. System.out.println(left);
  71. while ((left >= 0) && nums[left] == target) {
  72. lefts = left;
  73. left--;
  74.  
  75. }
  76. break;
  77. }*/
  78. }
  79.  
  80. while ((left >= 0) && nums[left] == target) {
  81. lefts = left;
  82. left--;
  83.  
  84. }
  85. ans.add(lefts);
  86. ans.add(rights);
  87. }
  88. return ans;
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement