diff --git a/0704-Binary_Search/main.js b/0704-Binary_Search/main.js new file mode 100644 index 0000000..4e22c49 --- /dev/null +++ b/0704-Binary_Search/main.js @@ -0,0 +1,43 @@ +const nums = [-1, 0, 3, 5, 9, 12]; +const target1 = 9; +const target2 = 2; +function searchUsingLCRC(nums, target) { + let mid, left = 0, right = nums.length - 1; + while (left <= right) { + mid = left + ((right - left) >> 1); + if (nums[mid] > target) { + right = mid - 1; + } + else if (nums[mid] < target) { + left = mid + 1; + } + else { + return mid; + } + } + return -1; +} +function searchUsingLCRO(nums, target) { + let mid, left = 0, right = nums.length; + while (left < right) { + mid = left + ((right - left) >> 1); + if (nums[mid] > target) { + right = mid; + } + else if (nums[mid] < target) { + left = mid + 1; + } + else { + return mid; + } + } + return -1; +} +console.time("searchUsingLCRC"); +searchUsingLCRC(nums, target1); +console.timeEnd("searchUsingLCRC"); +console.time("searchUsingLCRO"); +searchUsingLCRO(nums, target1); +console.timeEnd("searchUsingLCRO"); +console.log(searchUsingLCRC(nums, target1)); +console.log(searchUsingLCRO(nums, target1)); diff --git a/0704-Binary_Search/main.ts b/0704-Binary_Search/main.ts new file mode 100644 index 0000000..9afddfb --- /dev/null +++ b/0704-Binary_Search/main.ts @@ -0,0 +1,50 @@ +const nums = [-1, 0, 3, 5, 9, 12] +const target1 = 9 +const target2 = 2 + +function searchUsingLCRC(nums: number[], target: number): number { + let mid: number, + left: number = 0, + right: number = nums.length - 1 + + while (left <= right) { + mid = left + ((right - left) >> 1) + if (nums[mid] > target) { + right = mid - 1 + } else if (nums[mid] < target) { + left = mid + 1 + } else { + return mid + } + } + + return -1 +} + +function searchUsingLCRO(nums: number[], target: number): number { + let mid: number, + left: number = 0, + right: number = nums.length + while (left < right) { + mid = left + ((right - left) >> 1) + if (nums[mid] > target) { + right = mid + } else if (nums[mid] < target) { + left = mid + 1 + } else { + return mid + } + } + return -1 +} + +console.time("searchUsingLCRC") +searchUsingLCRC(nums, target1) +console.timeEnd("searchUsingLCRC") + +console.time("searchUsingLCRO") +searchUsingLCRO(nums, target1) +console.timeEnd("searchUsingLCRO") + +console.log(searchUsingLCRC(nums, target1)) +console.log(searchUsingLCRO(nums, target1)) diff --git a/0704-Binary_Search/readme.md b/0704-Binary_Search/readme.md new file mode 100644 index 0000000..82c79ca --- /dev/null +++ b/0704-Binary_Search/readme.md @@ -0,0 +1,22 @@ +Given an array of integers `nums` which is sorted in ascending order, and an integer `target`, write a function to search `target` in `nums`. If `target` exists, then return its index. Otherwise, return `-1`. + +You must write an algorithm with `O(log n)` runtime complexity. + +Example 1: + +> Input: nums = [-1,0,3,5,9,12], target = 9
+> Output: 4
+> Explanation: 9 exists in nums and its index is 4 + +Example 2: + +> Input: nums = [-1,0,3,5,9,12], target = 2
+> Output: -1
+> Explanation: 2 does not exist in nums so return -1 + +Constraints: + +- 1 <= nums.length <= 104 +- -104 < nums[i], target < 104 +- All the integers in `nums` are unique. +- `nums` is sorted in ascending order.