【C言語】1日1問(配列中に消える数字をすべて見つけなさい)

配列内の欠落している数値をすべて見つけます。リンクはここにあります。
ここに画像の説明を挿入

ここで簡単に言っておきますが、私はまだ触ったことがないので知識が限られており、自分に合ったものを見つけるために动态内存,数据结构最善を尽くしました。将来機会があれば、さまざまな解決策を追加します。结合题库的评论区解法

暴力の連鎖

やはり暴力の連鎖が一番考えやすいですが、簡単であればあるほど時間がかかり、タイムリミットを超えやすくなります。
アイデア:

二重forサイクル、外部控制1~n数値、内部遍历nums配列、2 つずつ比较记录表示されない数は消える数です

コード:

static int arr[99999];//创建数组
int* finddisappearednumbers(int* nums, int numssize, int* returnsize)
{
    
    
    int count = 0;//计数器
    int n = 0;
    for (int j = 1; j <= numssize; j++)
    {
    
    
        count = 0;//每次进入要重置
        for (int i = 0; i < numssize; i++)
        {
    
    
            if (j == nums[i])
            {
    
    
                count++;
                break;
            }
        }
        if (count == 0)//为0说明未出现
            arr[n++] = j;
    }
    *returnsize = n;
    return arr;
}

状況別の整理+ディスカッション

アイデア:

ソートというのは配列を整理して動作をよくするためのもの
で、状況に応じて議論するというのはどういうことなのかというと、それをループ変数に
してトラバースして添え字にして、nums[left] と i比較するというものです。このとき、例えば数字の繰り返しがあるので、このときはwhileループを使うとよいです。そのときは、結果の配列入れられますcaseなので、左はinです。 while は制限を超えます。この時点で、残りの for ループ内の開始されていない値を結果の配列に順番に代入します。1~ni
left=00left++

i==nums[left]left++1 2 2 2
i!=nums[left]i

numssizenums[numssize-1]1 2 2 2left==numssizei

コード:

int cmp(int* a, int* b)
{
    
    
    return *a - *b;
}
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
    
    
    qsort(nums,numsSize,sizeof(int),cmp);

    int* res=malloc(sizeof(int) * numsSize);//结果数组,result
    *returnSize=0;
    int left=0;

   for(int i=1;i<=numsSize;i++)
   {
    
    
       if(left<numsSize&&i!=nums[left])//注意:left要放前边,防止短路发生
       {
    
    
           res[(*returnSize)++]=i;
           //*returnsize随着结果数组的增加而增加,
           //最后返回的就是数组大小
       }
       if(left==numsSize)
       {
    
    
           res[(*returnSize)++]=i;
       }
       //while要在最后进行,因为在前边会改变left
       //影响两个if的判断
       while(left<numsSize&&i==nums[left])
       {
    
    
           left++;
       }
   }
    return res;
}

誰でも間違いを修正したり議論したりすることを歓迎します。

おすすめ

転載: blog.csdn.net/2301_78636079/article/details/132356650