fork download
  1. // your code goes here
  2.  
  3. function binarySearch(arr, n, target) {
  4. let left=0, right=n-1, mid;
  5. while(left<=right) {
  6. mid = Math.floor((left+right)/2);
  7. if(arr[mid] < target) {
  8. left = mid+1;
  9. } else if(arr[mid] > target) {
  10. right = mid-1;
  11. } else {
  12. return mid;
  13. }
  14. }
  15. return -1;
  16. }
  17.  
  18. // console.log(binarySearch([1, 3, 4, 4, 7, 8, 8, 9], 8, 7))
  19.  
  20. function lowerBound(arr, n, target) {
  21. let left=0, right=n-1, mid, ans=-1;
  22. while(left<=right) {
  23. mid = Math.floor((left+right)/2);
  24. if(arr[mid] < target) {
  25. left = mid+1;
  26. } else if(arr[mid] >= target) {
  27. ans = mid;
  28. right = mid-1;
  29. }
  30. }
  31. return ans;
  32. }
  33. // console.log(lowerBound([1, 3, 4, 4, 7, 8, 8, 9], 8, 5))
  34.  
  35. function upperBound(arr, n, target) {
  36. let left=0, right=n-1, mid, ans=-1;
  37. while(left<=right) {
  38. mid = Math.floor((left+right)/2);
  39. if(arr[mid] <= target) {
  40. left = mid+1;
  41. } else {
  42. ans = mid;
  43. right = mid-1;
  44. }
  45. }
  46. return ans;
  47. }
  48.  
  49. console.log(upperBound([1, 3, 4, 4, 7, 8, 8, 9], 8, 4))
  50.  
Success #stdin #stdout 0.03s 18980KB
stdin
Standard input is empty
stdout
4