zoukankan      html  css  js  c++  java
  • LeetCodeJava题解 35. Search Insert Position

    题目地址:35.Search Insert Position

    解题思路:一看到题目的关键字有序不重复整数,第一时间想到二分查找
    这道题是将二分查找进行了拓展,如果target不存在数组内,还需要进一步判断target的插入位置,
    target存在数组内的情况就不考虑了,与704. Binary Search并无二致。
    下面就考虑,元素不存在需要插入的情况。利用数组内元素有序的特性,首先考虑最简单的三种情况:

    1. 插入元素为最小元素
    2. 插入元素为最大元素
    3. 插入空数组
      然后除了在找到相同的数返回的情况后,和纯二分查找相比,在每次不相等比较后多一个位置记录。
      注意此处位置记录的差异,与比较的数相比,比他小就需要把当前元素后移一位,然后插入到他原来的位置,所以不用+1。
    class Solution {
        public int searchInsert(int[] nums, int target) {
            int low=0;
            int high=nums.length-1;
            int insertLocation=high;
            if (nums.length==0)
            {
                return 0;
            }
            if (target<nums[0])
            {
                return 0;
            }
            if (target>nums[nums.length-1])
            {
                return nums.length;
            }
                while(low<=high)
                {
                    int mid = (low + high)/2;
                    if(nums[mid]==target)
                    {
                        return mid;
                    }else if(nums[mid]>target)
                    {
                        high=mid-1;
                        insertLocation = high+1;
                    }else if(nums[mid]<target)
                    {
                        low=mid+1;
                        insertLocation = low;
                    }
                }
                return insertLocation;
        }
    }
    
  • 相关阅读:
    TP框架模板中IF Else 如何使用?
    Append 后如何使用 fadein淡入效果
    ThinkPad如何修改fn键默认操作
    TP框架ajax U方法不解析怎么办?
    thinkphp session如何取数组
    FTP服务搭建
    Linux系统学习之字符处理
    如何使用zabbix初级监控
    项目同步部署
    巡检常用命令
  • 原文地址:https://www.cnblogs.com/hooyeefam/p/15751860.html
Copyright © 2011-2022 走看看