专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

LeetCode只出现一次的数字

ins518 2024-11-21 16:11:11 技术文章 10 ℃ 0 评论

需求描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现2次。找出那个只出现过一次的元素。

说明:你的算法应该具有线性时间复杂度。你可以不使用额外的空间来实现吗?

解析思路一:

int singleNumber(int* nums, int numsSize)
{
    int n = nums[0];
    int i = 0;
    for(i = 1;i < numsSize;i ++){
        n = n ^ nums[i];
    }
    return n;
}

解析思路二:

int compFunc(void* a, void* b)
{
    int* node1 = (int*)a;
    int* node2 = (int*)b;
    return (*node1 - *node2);
}

int singleNumber(int* nums, int numsSize)
{
    int result,i;
    qsort(nums, numsSize, sizeof(int), compFunc);//快速排序函数
    result = nums[0];
    for (i = 1; i < numsSize; i++)
    {
        if (result != nums[i])break;
        i++;
        result = nums[i];
    }
    return result;
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表