LeetCode_442_数组_数组中重复的数据

Posted 軒邈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode_442_数组_数组中重复的数据相关的知识,希望对你有一定的参考价值。

原创:

/*
    理解:
        1.nums长度为n;
        2.nums中元素的范围[1,n];
        3.nums中每个元素出现1次或者2次;
        4.找出在nums中出现2次的元素,并且返回该些元素的数组;
        5.时间复杂度:O(n),空间复杂度为O(1)。
    思路:
        1.分配动态内存,建立动态内存数组;
        2.然后利用哈希表,存储nums中元素出现的次数;
        3.通过循环找到出现次数为2的元素,然后存入动态内存数组中。
    注意:与LeetCode_448_数组_找到所有数组中消失的数字解题思路类似。
*/

int* findDuplicates(int* nums, int numsSize, int* returnSize)

    int* pArry = (int *)malloc(sizeof(int)*numsSize); /* 建立动态内存数组 */
    *returnSize = 0;
    memset(pArry, 0, numsSize*sizeof(int)); /* 将数组中的元素初始化为0,方便后面进行数据的存储 */

    for(int i = 0; i < numsSize; i++)
    
        pArry[nums[i] - 1] ++; /* -1 是因为 nums 元素值的区间是怕[1,n] */
    

    for(int i = 0; i < numsSize; i++)
    
        if(pArry[i] == 2)
        
            pArry[(*returnSize) ++] = i + 1; 
        
    

    return pArry; /* 因为返回的是整个数组,但是还返回了该数组的长度 *returnSize, 所以其余无用值是不会出现的 */


总结:

前面见过的、使用的、不是很熟的知识,可以拿来再用一遍或者多遍,最终是可以掌握的!

以上是关于LeetCode_442_数组_数组中重复的数据的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 442. 数组中重复的数据

leetcode 442. 数组中重复的数据 java

LeetCode 442.数组中重复的数据 - JavaScript

LeetCode 442 数组中重复的数据[哈希表] HERODING的LeetCode之路

leetcode 442. 数组中重复的数据(Find All Duplicates in an Array)

(Java) LeetCode 442. Find All Duplicates in an Array —— 数组中重复的数据