美文网首页
35. 搜索插入位置

35. 搜索插入位置

作者: JiangCheng97 | 来源:发表于2019-05-30 14:43 被阅读0次

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    你可以假设数组中无重复元素。

    示例 1:

    输入: [1,3,5,6], 5
    输出: 2
    

    示例 2:

    输入: [1,3,5,6], 2
    输出: 1
    

    示例 3:

    输入: [1,3,5,6], 7
    输出: 4
    

    示例 4:

    输入: [1,3,5,6], 0
    输出: 0
    

    方法一:遍历数组

    执行用时 : 1 ms, 在Search Insert Position的Java提交中击败了96.22% 的用户

    内存消耗 : 37.8 MB, 在Search Insert Position的Java提交中击败了81.54% 的用户

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int index=0;
            int i = 0;
            for(; i<nums.length; i++){
                if(nums[i]>=target){
                    index = i;
                    break;
                }
                
            }
            if(i==nums.length){
                index = nums.length;
            }
            return index;
        }
    }
    

    方法二:二分查找

    执行用时 : 1 ms, 在Search Insert Position的Java提交中击败了96.22% 的用户

    内存消耗 : 37.4 MB, 在Search Insert Position的Java提交中击败了89.13% 的用户

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int low = 0;
            if (nums[low] == target)
                return low;
            int heigh = nums.length - 1;
            if (nums[heigh] == target)
                return heigh;
            int mid = (low + heigh) / 2;
            while (low <= heigh) {
                mid = (low + heigh) / 2;
                if (nums[mid] == target) {
                    return mid;
                } else if (nums[mid] > target) {
                    heigh = mid - 1;
                } else {
                    low = mid + 1;
                }
            }
            return low;
        }
    }
    

    相关文章

      网友评论

          本文标题:35. 搜索插入位置

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