美文网首页
35 Search Insert Position

35 Search Insert Position

作者: yangminz | 来源:发表于2018-07-16 00:07 被阅读5次

    title: Search Insert Position
    tags:
    - search-insert-position
    - No.35
    - simple
    - binary-search
    - divide-conquer


    Problem

    Given a sorted array 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 may assume no duplicates in the array.

    Example 1:

    Input: [1,3,5,6], 5
    Output: 2
    

    Example 2:

    Input: [1,3,5,6], 2
    Output: 1
    

    Example 3:

    Input: [1,3,5,6], 7
    Output: 4
    

    Example 4:

    Input: [1,3,5,6], 0
    Output: 0
    

    Corner Cases

    • empty array
    • one-element array
    • too large target
    • too small target
    • the largest target
    • the smallest target
    • the half for odd array

    Solutions

    Binary Search

    For input array nums[i : j], compare the middle number nums[(i + j)/2] and search the corresponding part. Running time is O(lg(n)):

    class Solution {
        private int[] nums;
        private int   targ;
        
        public int searchInsert(int[] nums, int target) {
            int l = nums.length;
            
            if (l == 0) {return 0;}
            
            this.nums = nums;
            this.targ = target;
            
            return binarySearch(0, nums.length-1);
        }
        
        private int binarySearch(int i, int j) {
            if (i == j) {
                boolean c1 = (this.nums[i] == this.targ);
                boolean c2 = (this.nums[i] < this.targ);
                return c1 ? i : (c2 ? i+1 : i);
            }
            
            int m = (i + j) / 2;
            
            i = (this.targ <= this.nums[m]) ? i : m + 1;
            j = (this.targ <= this.nums[m]) ? m : j;
            
            return binarySearch(i, j);
        }
    }
    

    相关文章

      网友评论

          本文标题:35 Search Insert Position

          本文链接:https://www.haomeiwen.com/subject/tjvmpftx.html