zoukankan      html  css  js  c++  java
  • leetcode 35. Search Insert Position

    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
    class Solution(object):
        def searchInsert(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: int
            """
            if target < nums[0]:
                return 0
            if target > nums[-1]:
                return len(nums)
            i, j = 0, len(nums)-1
            while i<=j:
                mid = (i+j) >> 1 # /2
                if nums[mid] == target:
                    return mid
                elif nums[mid] > target:
                    j = mid-1
                else:
                    i = mid+1
            return i            
    

    经典二分查找!如果没有找到则nums[j] < target < nums[i]. 因此,返回i

    如果前面不加判断:

    public int searchInsert(int[] nums, int target) {
            if(nums.length == 0) return 0;
            int mid = 0;
            int lo= 0,hi=nums.length-1;
            while(lo<=hi){
                mid = (lo+hi)/2;
                if(nums[mid] == target) return mid;
                else if(target > nums[mid]) lo = mid+1;
                else hi = mid-1;
            }
            return target < nums[mid] ? mid : mid+1;
        }
    
  • 相关阅读:
    WPF中实现Button.Content变化的简易动画
    WPF中ListBox的项ListBoxItem被选中的时候Background变化
    GD库处理图像
    PHP上传文件示例
    会话控制:Cookie和session
    PHP表单与验证
    PHP日期与时间
    PHP正则表达式
    PHP字符串处理
    目录与文件操作
  • 原文地址:https://www.cnblogs.com/bonelee/p/9108503.html
Copyright © 2011-2022 走看看