題目
給定兩個(gè)數(shù)組?
nums1
?和?nums2
?,返回?它們的交集?。輸出結(jié)果中的每個(gè)元素一定是?唯一?的。我們可以?不考慮輸出結(jié)果的順序?。難度:簡(jiǎn)單
題目鏈接:349.兩個(gè)數(shù)組的交集
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2]
示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[9,4] 解釋:[4,9] 也是可通過(guò)的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
思路解析
根據(jù)題目的意思就是求出兩個(gè)數(shù)組的交集,返回兩個(gè)數(shù)組都包含的元素。
下方代碼的方法就是 用兩層for循環(huán)來(lái)比較nums1和nums2兩個(gè)數(shù)組中相同的元素,然后把相同的元素,通過(guò)創(chuàng)建一個(gè)臨時(shí)數(shù)組,存放與下標(biāo)與之對(duì)應(yīng)的元素 ( 前提是先把來(lái)臨時(shí)數(shù)組需要用到元素初始化為-1?,原因是方便以后的數(shù)組遍歷)。
最后遍歷臨時(shí)數(shù)組,把不是-1的元素放到返回?cái)?shù)組中。
代碼展示
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int tmp[1001] = {0};//創(chuàng)建臨時(shí)數(shù)組
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
int * arr = (int*)malloc(sizeof(int)*nums1Size);
int i = 0;
int j = 0;
int x = 0;
//把數(shù)組所有元素全部初始化為-1
for(i = 0;i<=1000;i++)
{
tmp[i] = -1;
}
for(i = 0;i<nums1Size;i++)
{
for(j = 0;j<nums2Size;j++)
{
if(nums1[i] == nums2[j])//把對(duì)應(yīng)的元素放到相應(yīng)的數(shù)組下標(biāo)
{
x = nums1[i]%1001;
tmp[x] = x;
}
}
}
j = 0;
for(i = 0;i<=1000;i++)
{
if(tmp[i] != -1)
{
arr[j++] = tmp[i];
}
}
*returnSize = j;
return arr;
}
【詳細(xì)解析】
如果只看思路解析的話,那么我們想的是應(yīng)該怎木寫(xiě)代碼呢,先在函數(shù)外創(chuàng)建一個(gè)臨時(shí)的數(shù)組,然后在函數(shù)內(nèi)部使用malloc使用動(dòng)態(tài)內(nèi)存分配一個(gè)返回?cái)?shù)組。
然后使用一個(gè)for循環(huán)先把臨時(shí)數(shù)組里面的元素置成 - 1,因?yàn)閿?shù)組存儲(chǔ)元素的數(shù)字的范圍是[ 0,1000]。
接著用兩層for循環(huán)進(jìn)行判斷兩個(gè)數(shù)組是否相同的元素(即數(shù)組元素的交集),在內(nèi)層的for循環(huán)里面使用一個(gè)if語(yǔ)句進(jìn)行判斷,如果找到兩個(gè)數(shù)組元素的交集我們就先把元素放到臨時(shí)數(shù)組(tmp[])相應(yīng)的位置。
x = nums1[i]%1001;
tmp[x] = x;
當(dāng)放到臨時(shí)數(shù)組后,還需要把臨時(shí)數(shù)組中元素不等于-1的元素放到返回?cái)?shù)組中。
if(tmp[i] != -1)
{
arr[j++] = tmp[i];
}
?接著就是返回 返回?cái)?shù)組的元素的個(gè)數(shù) 和 返回 返回?cái)?shù)組首元素的地址。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-697035.html
*returnSize = j;//返回?cái)?shù)組的大小
return arr;//返回?cái)?shù)組首元素的地址
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-697035.html
到了這里,關(guān)于Leetcode:349. 兩個(gè)數(shù)組的交集【題解超詳細(xì)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!