力扣(Leecode) 540. 有序数组中的单一元素

题目
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。
请你找出并返回只出现一次的那个数。
你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。
网址连接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array/

我的代码

int singleNonDuplicate(int* nums, int numsSize) {
    int c;
    for (int i = 0; i < (numsSize + 1) / 2 ; i++) {
        if (nums[2 * i] != nums[2 * i + 1]) {
            c = nums[2 * i];
            printf("%d", c);
            break;
        }
    }
    return c;
}

看不懂出了什么错误

img

你这样明显会越界,for循环第二个条件,改成i<(numsize-1)/2-1,在循环中直接返回c,然后最后返回最后一个元素。而且,你也不满足它的时间复杂度啊。而且,题目让你返回,没让你输出啊。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632