LeetCode第35题——搜索插入位置C语言解法

LeetCode第35题——搜索插入位置C语言解法,第1张

LeetCode第35题——搜索插入位置C语言解法

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 

此题目需要注意的是应用二分法时,本题目的要求都直接被二分法的判断条件包含了,不需要另设判断条件。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5702303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存