題目: 給定兩個數組,編寫一個函數來計算它們的交集.(來自 leecode(349) )
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站制作、網站建設、營山網絡推廣、小程序開發、營山網絡營銷、營山企業策劃、營山品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供營山建站搭建服務,24小時服務熱線:18980820575,官方網址:m.kartarina.com
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2] 示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[9,4]
說明:
我的解法:
題目同上,只不過在輸出的時候
輸出結果中每個元素出現的次數,應與元素在兩個數組中出現的次數一致。
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2,2] 示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[9,4]
解法
如果給定的數組是排好序的,
arr1 = [1,2,3,4,4,13],arr2 = [1,2,3,9,10]
那這個返回值該如何獲取得兩個數組的交集呢?
解法
1、數組是多個 相同類型 的數據的組合,一個數組一旦聲明/定義了,其 長度是固定的,不能動態變化 。
2、var arr []int? ? 這時arr就是一個slice 切片 。
3、數組中的元素可以是任何數據類型,包括值類型和引用類型,但是 不能混用 。
4、數組創建后,如果沒有賦值,有默認值如下:
? ? 數值類型數組:????默認值為 0
? ? 字符串數組:? ? ? ?默認值為 ""
? ? bool數組:? ? ? ? ? ?默認值為 false
5、使用數組的步驟:
? ? (1)聲明數組并開辟空間
? ? (3)給數組各個元素賦值
? ? (3)使用數組
6、數組的下標是從0開始的。
7、數組下標必須在指定范圍內使用,否則報panic:數組越界,比如var arr [5]int的有效下標為0~4.
8、Go的數組屬于 值類型 ,在默認情況下是 值傳遞 ,因此會進行值拷貝。 數組間不會相互影響。
9、如想在其他函數中去修改原來的數組,可以使用 引用傳遞 (指針方式)。
10、長度是數組類型的一部分,在傳遞函數參數時,需要考慮數組的長度,看以下案例:
題1:編譯錯誤,因為不能把[3]int類型傳遞給[]int類型,前者是數組,后者是切片;
題2:編譯錯誤,因為不能把[3]int類型傳遞給[4]int類型;
題3:編譯正確,因為[3]int類型傳給[3]int類型合法。
百位數有4種選擇,為與百位數不重復,十位數就只有3種選擇了;同樣道理,個位數就只有2種選擇。所以1、2、3、4等4個數字能組成4x3x2共24種互不相等且沒有重復數字的3位數。根據上述原理,可用一個3層嵌套for循環來完成,代碼如下:
#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++)//百位數字有4種選擇
for(j=1;j=4;j++)//十位數字有3種選擇
if(j!=i)//遇到十位數字等于百位數字時跳過
for(k=1;k=4;k++)//個位數字只有2種選擇了
if(k!=i??k!=j)//個位數字與十位或百位數字相等時跳過
printf(++t%10???"%4d"?:?"%4d\n",i*100+j*10+k);//輸出該三位數
if(t%10)
printf("\n");
return?0;
}
擴展資料
#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();
}
網頁標題:go語言500題 go語言筆試題
URL網址:http://m.kartarina.com/article34/hggppe.html
成都網站建設公司_創新互聯,為您提供商城網站、建站公司、微信公眾號、、用戶體驗、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯