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

网站首页 > 技术文章 正文

LeetCode找到所有数组中消失的数字

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

需求描述:给你一个含n个整数的数组nums,其中nums[i]在区间[1,n]内,请找出所有在[1,n]范围内但没有出现在nums中的数字,并以数组的形式返回结果。

提示:

1、n==nums.length

2、1<=n<=10的5次方

3、1<=nums[i]<=n

实现方法一:

//时间复杂度O(2n)
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {
    for (int i = 0; i < numsSize; i++) {
        int index = (nums[i] - 1) % numsSize;
        nums[index] += numsSize;
    }
    int* ret = malloc(sizeof(int) * numsSize);
    *returnSize = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] <= numsSize) {
            ret[(*returnSize)++] = i + 1;
        }
    }
    return ret;
}

实现方法二:

//时间复杂度O(n*n)
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {
    int* ret = malloc(sizeof(int) * numsSize);
    *returnSize = 0;
    for(int j=1;j<=numsSize;j++) {
        bool tag = false;
        for(int i=0;i<numsSize;i++) {
            if(!(nums[i] ^ j)) {
                tag = true;
                break;
            }
        }
        if(!tag) ret[(*returnSize)++] = j;
    }
    return ret;
}

Tags:

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

欢迎 发表评论:

最近发表
标签列表