• 2150. 找出数组中的所有孤独数字-快速排序


    2150. 找出数组中的所有孤独数字

    给你一个整数数组 nums 。如果数字 x 在数组中仅出现 一次 ,且没有 相邻 数字(即,x + 1 和 x - 1)出现在数组中,则认为数字 x 是 孤独数字 。

    返回 nums 中的 所有 孤独数字。你可以按 任何顺序 返回答案。

    示例 1:

    输入:nums = [10,6,5,8]
    输出:[10,8]
    解释:

    • 10 是一个孤独数字,因为它只出现一次,并且 9 和 11 没有在 nums 中出现。
    • 8 是一个孤独数字,因为它只出现一次,并且 7 和 9 没有在 nums 中出现。
    • 5 不是一个孤独数字,因为 6 出现在 nums 中,反之亦然。
      因此,nums 中的孤独数字是 [10, 8] 。
      注意,也可以返回 [8, 10] 。

    示例 2:

    输入:nums = [1,3,5,3]
    输出:[1,5]
    解释:

    • 1 是一个孤独数字,因为它只出现一次,并且 0 和 2 没有在 nums 中出现。
    • 5 是一个孤独数字,因为它只出现一次,并且 4 和 6 没有在 nums 中出现。
    • 3 不是一个孤独数字,因为它出现两次。
      因此,nums 中的孤独数字是 [1, 5] 。
      注意,也可以返回 [5, 1] 。

    这一题,排序之后,我们在对其元素进行逐个遍历即可:

    /**
     * Note: The returned array must be malloced, assume caller calls free().
     */
    
    
    void quick_sort(int *a,int low,int high){
        int l=low,h=high;
        if(low<high){
            int p=a[low];
            while(low<high){
                while(low<high&&a[high]>=p){
                    high--;
    
                }
                a[low]=a[high];
                while(low<high&&a[low]<=p){
                    low++;
                }
                a[high]=a[low];
            }
            a[low]=p;
            quick_sort(a,l,low-1);
            quick_sort(a,low+1,h);
    
        }
    }
    int* findLonely(int* nums, int numsSize, int* returnSize){
        // for(int i=1;i
        //     int t=nums[i];
        //     int j;
        //     for( j=i-1;j>=0;j--){
        //         if(nums[j]>t){
        //             nums[j+1]=nums[j];
        //         }
        //         else{
        //             nums[j+1]=t;
        //             break;
        //         }
        //     }
        //     if(j==-1){
        //         nums[0]=t;
        //     }
        // }
        if(numsSize==1){
            *returnSize=1;
            return nums;
        }
        quick_sort(nums,0,numsSize-1);
        int p=0;
        for(int i=0;i<numsSize;i++){
            printf("%d ",nums[i]);
            if(i==0){
                if(nums[i+1]!=nums[i]+1&&nums[i+1]!=nums[i]-1&&nums[i+1]!=nums[i]){
                    nums[p++]=nums[i];
                }
            }
            else if(i==numsSize-1){
                if(nums[i-1]!=nums[i]+1&&nums[i-1]!=nums[i]-1&&nums[i-1]!=nums[i]){
                    nums[p++]=nums[i];
                }
    
            }
            else{
                if(nums[i-1]!=nums[i]+1&&nums[i-1]!=nums[i]-1&&nums[i+1]!=nums[i]+1&&nums[i+1]!=nums[i]-1&&nums[i]!=nums[i+1]&&nums[i]!=nums[i-1]){
                    nums[p++]=nums[i];
                }
    
            }
        }
        *returnSize=p;
        return nums;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
  • 相关阅读:
    机器学习中的数学基础(二)
    Centos7配置阿里云的yum源详细步骤
    Linux mac Windows三系统 局域网文件共享方法
    02_Java基础语法
    springboot 集成redis
    C# ASP.NET利用SQLDMO备份和还原数据库
    代码随想录训练营补充|图论|Golang
    docker给已存在的容器添加或修改端口映射
    python - 内存池的机制
    python fastapi 使用 UploadFile 接收多个图片文件并上传多个文件
  • 原文地址:https://blog.csdn.net/weixin_43327597/article/details/126911535