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;
            }
        }
    }
  • 相关阅读:
    解决response在controller返回乱码的解决方式
    Injection of autowired dependencies failed;错误解决
    sql mybatis 使用concat乱码
    【算法基础】欧几里得gcd求最大公约数
    sql视图和表的区别
    在idea下创建maven
    Arrays.sort()自定义排序
    数组
    java 遍历数组
    抽象与接口
  • 原文地址:https://www.cnblogs.com/kevincong/p/7803407.html
Copyright © 2011-2022 走看看