【C语言刷LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置(M)

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

你的算法时间复杂度必须是 O(log n) 级别。

如果数组中不存在目标值,返回 [-1, -1]。

示例 1:

输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4]
示例 2:

输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

同33题,也是直接暴力就过了,实际应该用二分的。

int* searchRange(int* nums, int numsSize, int target, int* returnSize){
    int i;
    int begin = -1;
    int end = -1;
    int count = 0;
    int *retarr;
    
    retarr = (int *)malloc(sizeof(int) * 2);
    memset(retarr, 0, sizeof(int) * 2);
    
    for (i = 0; i < numsSize; i++) {
        if (target == nums[i]) {
            if (count == 0) {
                begin = i;
                end = i;
            } else {
                end = i;
            }
            
            count++;
        }
        
        if (target < nums[i]) {
            break;
        }
    }
    
    retarr[0] = begin;
    retarr[1] = end;
    *returnSize = 2;
    
    return retarr;
}
发布了102 篇原创文章 · 获赞 17 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/jin615567975/article/details/104306788