<leetcode>NO.35搜索插入位置

    xiaoxiao2022-07-03  124

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

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

    示例 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 //解法一:暴力搜索 int searchInsert(int* nums, int numsSize, int target){ int pos=0; for(int i=0;i<numsSize;++i) { if(nums[i]<target) { pos++; } else { break; } } return pos; } //二分法 int searchInsert(int* nums, int numsSize, int target){ if(numsSize==0)return 0; int left=0,right=numsSize,medium=(left+right)/2; while(left<medium) { if(nums[medium]<target) { left=medium; } else if (nums[medium]>target) { right=medium; } else { break; } medium=(left+right)/2; } int pos=right; if(nums[left]>=target)pos=left; else if(nums[medium]>=target)pos=medium; else if(nums[right-1]>=target)pos=right-1; return pos; }

    暴力搜索:时间复杂度O(n)

    执行用时 : 8 ms, 在Search Insert Position的C提交中击败了96.19% 的用户

    内存消耗 : 7.4 MB, 在Search Insert Position的C提交中击败了46.48% 的用户

    二分法:O(log(n))

    执行用时 : 8 ms, 在Search Insert Position的C提交中击败了96.19% 的用户

    内存消耗 : 7.3 MB, 在Search Insert Position的C提交中击败了56.54% 的用户

     

    最新回复(0)