題目: 給定兩個數(shù)組,編寫一個函數(shù)來計(jì)算它們的交集.(來自 leecode(349) )
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括雷山網(wǎng)站建設(shè)、雷山網(wǎng)站制作、雷山網(wǎng)頁制作以及雷山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,雷山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到雷山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2] 示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[9,4]
說明:
我的解法:
題目同上,只不過在輸出的時候
輸出結(jié)果中每個元素出現(xiàn)的次數(shù),應(yīng)與元素在兩個數(shù)組中出現(xiàn)的次數(shù)一致。
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2,2] 示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[9,4]
解法
如果給定的數(shù)組是排好序的,
arr1 = [1,2,3,4,4,13],arr2 = [1,2,3,9,10]
那這個返回值該如何獲取得兩個數(shù)組的交集呢?
解法
1、數(shù)組是多個 相同類型 的數(shù)據(jù)的組合,一個數(shù)組一旦聲明/定義了,其 長度是固定的,不能動態(tài)變化 。
2、var arr []int? ? 這時arr就是一個slice 切片 。
3、數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括值類型和引用類型,但是 不能混用 。
4、數(shù)組創(chuàng)建后,如果沒有賦值,有默認(rèn)值如下:
? ? 數(shù)值類型數(shù)組:????默認(rèn)值為 0
? ? 字符串?dāng)?shù)組:? ? ? ?默認(rèn)值為 ""
? ? bool數(shù)組:? ? ? ? ? ?默認(rèn)值為 false
5、使用數(shù)組的步驟:
? ? (1)聲明數(shù)組并開辟空間
? ? (3)給數(shù)組各個元素賦值
? ? (3)使用數(shù)組
6、數(shù)組的下標(biāo)是從0開始的。
7、數(shù)組下標(biāo)必須在指定范圍內(nèi)使用,否則報(bào)panic:數(shù)組越界,比如var arr [5]int的有效下標(biāo)為0~4.
8、Go的數(shù)組屬于 值類型 ,在默認(rèn)情況下是 值傳遞 ,因此會進(jìn)行值拷貝。 數(shù)組間不會相互影響。
9、如想在其他函數(shù)中去修改原來的數(shù)組,可以使用 引用傳遞 (指針方式)。
10、長度是數(shù)組類型的一部分,在傳遞函數(shù)參數(shù)時,需要考慮數(shù)組的長度,看以下案例:
題1:編譯錯誤,因?yàn)椴荒馨裑3]int類型傳遞給[]int類型,前者是數(shù)組,后者是切片;
題2:編譯錯誤,因?yàn)椴荒馨裑3]int類型傳遞給[4]int類型;
題3:編譯正確,因?yàn)閇3]int類型傳給[3]int類型合法。
百位數(shù)有4種選擇,為與百位數(shù)不重復(fù),十位數(shù)就只有3種選擇了;同樣道理,個位數(shù)就只有2種選擇。所以1、2、3、4等4個數(shù)字能組成4x3x2共24種互不相等且沒有重復(fù)數(shù)字的3位數(shù)。根據(jù)上述原理,可用一個3層嵌套for循環(huán)來完成,代碼如下:
#include?"stdio.h"
int?main(int?argc,char?*argv[]){
int?i,j,k,t;
printf("A?total?of?%d?no?repeat?number?3-digits,?they?are?as?follows:\n",4*3*2);
for(t=0,i=1;i=4;i++)//百位數(shù)字有4種選擇
for(j=1;j=4;j++)//十位數(shù)字有3種選擇
if(j!=i)//遇到十位數(shù)字等于百位數(shù)字時跳過
for(k=1;k=4;k++)//個位數(shù)字只有2種選擇了
if(k!=i??k!=j)//個位數(shù)字與十位或百位數(shù)字相等時跳過
printf(++t%10???"%4d"?:?"%4d\n",i*100+j*10+k);//輸出該三位數(shù)
if(t%10)
printf("\n");
return?0;
}
擴(kuò)展資料
#includestdio.h
main()
{
int i, j, k;
int m=0;
for(i=1;i5;i++)
for(j=1;j5;j++)
for(k=1;k5;k++)
{
if(i!=jk!=ji!=k)
{
printf("%d%d%d\n",i,j,k);
m++;
}
}
printf("%d\n",m);
getch();
}