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.数组中重复的数据 - JavaScript
LeetCode 442 数组中重复的数据[哈希表] HERODING的LeetCode之路
leetcode 442. 数组中重复的数据(Find All Duplicates in an Array)
(Java) LeetCode 442. Find All Duplicates in an Array —— 数组中重复的数据