All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0035_search_insert_position.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
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