LeetCode題解——35. 搜索插入位置(C語言)


原題鏈接:

https://leetcode-cn.com/problems/search-insert-position

題目:

給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。

你可以假設數組中無重復元素。

示例 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

思路:

由於數組已經有序,可以用二分法查找target值的位置,如果最后二分出的值大於或等於target值,返回 l 或 r 即可,否則則返回 l+1 或 r+1。

代碼:

int searchInsert(int* nums, int numsSize, int target){
    int l = 0, r = numsSize - 1;
    while(l < r)
    {
        int mid = l + r >> 1;
        if(nums[mid] >= target) r = mid;
        else l = mid + 1;
    }
    if(nums[l] >= target)   return l;
    return l + 1;
}

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM