LeetCode入门题
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
题目要求:在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
此时分两种情况:
1.在数组中找到目标元素。
这种情况直接使用二分法搜索返回数值即可,较好理解。
2.在数组中未找到目标元素,返回插入元素的位置。
该情况又分为3种请况,分别为
(1)数组元素均大于目标元素
此时根据二分法的判断条件left会不断被mid更新赋值增大。直到left==right时,判断完数组元素均大于目标元素,故此时插入目标元素的位置为数组的长度,即left或right的位置。
(2)数组元素均小于目标元素
此时根据二分法的判断条件right会不断被mid更新赋值变小。直到left=right时,判断数组元素均小于目标元素,故此时插入目标元素的位置为数组的初始left的位置,也就是数组下标0.。
(3)目标元素在数组中插入
此情况是nums【mid】的元素大小与目标元素比较,然后left与right的位置不断变化,直到left==right时,求得插入元素的位置。
LeetCode要求代码如下:
int searchInsert(int* nums, int numsSize, int target){ int left=0,right=numsSize; while(left此题目需要注意的是应用二分法时,本题目的要求都直接被二分法的判断条件包含了,不需要另设判断条件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)