g0001_0100.s0035_search_insert_position.Solution Maven / Gradle / Ivy
package g0001_0100.s0035_search_insert_position;
// #Easy #Top_100_Liked_Questions #Array #Binary_Search #Algorithm_I_Day_1_Binary_Search
// #Binary_Search_I_Day_2 #2022_06_15_Time_0_ms_(100.00%)_Space_44.2_MB_(8.12%)
/**
* 35 - Search Insert Position\.
*
* Easy
*
* Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
*
* You must write an algorithm with `O(log n)` runtime complexity.
*
* **Example 1:**
*
* **Input:** nums = [1,3,5,6], target = 5
*
* **Output:** 2
*
* **Example 2:**
*
* **Input:** nums = [1,3,5,6], target = 2
*
* **Output:** 1
*
* **Example 3:**
*
* **Input:** nums = [1,3,5,6], target = 7
*
* **Output:** 4
*
* **Example 4:**
*
* **Input:** nums = [1,3,5,6], target = 0
*
* **Output:** 0
*
* **Example 5:**
*
* **Input:** nums = [1], target = 0
*
* **Output:** 0
*
* **Constraints:**
*
* * 1 <= nums.length <= 104
* * -104 <= nums[i] <= 104
* * `nums` contains **distinct** values sorted in **ascending** order.
* * -104 <= target <= 104
**/
public class Solution {
public int searchInsert(int[] nums, int target) {
int lo = 0;
int hi = nums.length - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (target == nums[mid]) {
return mid;
} else if (target < nums[mid]) {
hi = mid - 1;
} else if (target > nums[mid]) {
lo = mid + 1;
}
}
return lo;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy