zoukankan      html  css  js  c++  java
  • leetCode-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 1:

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

    我的版本(递归二分):

    class Solution {
        public int searchInsert(int[] nums, int target) {
            if(target > nums[nums.length - 1]){
                return nums.length;
            }else if(target < nums[0]){
                return 0;
            }
            return binarySearch(nums,0,nums.length -1,target);
        }
        int binarySearch(int[]nums,int first,int last,int target){
            int medium = (first + last) / 2;
            if(first == medium && nums[medium] != target){
                return first + 1;
            }
            if(target == nums[medium]){
                return medium;
            }
            if(target > nums[medium]){
                first = medium;
            }
            if(target < nums[medium]){
                last = medium;
            }
            return binarySearch(nums,first,last,target);
        }
    }

    改进版本(非递归二分):

    class Solution {
        public int searchInsert(int[] nums, int target) {
            if (nums.length == 0) {
                return 0;
            }
            if (target > nums[nums.length - 1]) {
                return nums.length;
            }
            if (target < nums[0]) {
                return 0;
            }
    
            int start = 0; 
            int end = nums.length - 1;
            while (start < end - 1) {
                int mid = start + (end - start) / 2;
                if (nums[mid] < target) {
                    start = mid;
                } else {
                    end = mid;
                }
            }
    
            if (nums[start] == target) {
                return start;
            } else {
                return end;
            }
        }
    }
  • 相关阅读:
    HTML5 向网页嵌入视频和音频
    HTML5中History.back()页面后退刷新页面
    阻止表单的默认提交事件
    SQL Server 2008带字段注释导入Power Designer 9.5
    CodeSmith将模板文件批量生成文件的方法(转)
    Nhibernate学习心得
    邮件发送代码
    Json的一些了解
    有关js的一个问题
    在IIS上启用Gzip压缩(HTTP压缩)
  • 原文地址:https://www.cnblogs.com/kevincong/p/7803407.html
Copyright © 2011-2022 走看看