g0001_0100.s0035_search_insert_position.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
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 #Big_O_Time_O(log_n)_Space_O(1)
// #2023_08_09_Time_0_ms_(100.00%)_Space_43.3_MB_(58.21%)
/**
* 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