求兩個整型陣列的非共有元素

2021-10-14 07:44:02 字數 1395 閱讀 7495

【題目描述】

給定兩個整型陣列,要求找出不是兩者共有的元素。

【輸入】

有兩行。第1行先給出正整數n(n≤20),隨後是n個整數,其間以空格分隔。第2行先給出正整數m(m≤20),隨後是m個整數,其間以空格分隔。

【輸出】

僅一行。按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔。題目保證至少存在乙個這樣的數字,同一數字不重複輸出。

【樣例輸入】

10 3 -5 2 8 0 3 5 -15 9 100

11 6 4 8 2 6 -5 9 0 100 8 1

【樣例輸出】

3 5 -15 6 4 1

1、解決思路

設立三個整型陣列a,b,c。a和b是待輸入的兩個陣列,c用來儲存兩陣列的非公有元素。

由a開始遍歷a中的每乙個元素,乙個乙個與b中的元素比較,如果a[i]與b中所有元素都不同,那麼a[i]就是a的獨有元素;同理,遍歷b中的每乙個元素,與a中每個元素進行比較,如果都不同,則此元素為b的獨有元素。

可以設定乙個變數k,每當a中某個元素與b中元素不同時,k自增1,全部不同的話,k的值應該為m(即b陣列中元素個數)。同理,當b中的某個元素與a中元素全部不相同時,k的值應該為n。需要注意的是,每比較完乙個值,k都應該重置為0,重新記錄。

最終得到的初始陣列c中會有重複元素,可以通過相同的方法,將c[i]與之前的值逐一比較,最終將沒有重複的值乙個個輸出。

2、具體**

#include

#include

intmain()

scanf

("%d"

,&m)

;int b[m]

;for

(j=0

;j)for

(i=0

;iif(k==m)

}for

(j=0

;jif(k==n)

}for

(i=0

;iif(k==i)

}}

3、具體樣例

10113

105614

10514

101065

182169

421511314

10182

169415

process returned 0

(0x0

) execution time :

1.660 s

press any key to continue

.

此**雖然能求出兩個陣列之間的非公共元素,但是其比較的過程過於繁雜,並不是乙個精簡的**,有待改進。如有不當之處或需要改進的地方,望請指正!謝謝。

求兩個有序整型陣列的交集

有兩個有序的整型陣列a和b 沒有重複元素 他們的長度分別為lena和lenb,求出他們的共同元素。例如 a 0,1,3,5,7,9,11 b 2,3,4,7,11 它們的交集為。求交集的方法有很多種,但陣列的長度會影響演算法的效率。2.1.1 二路歸併 對於陣列a,b分別以i,j從頭遍歷陣列。如果當...

找出不是兩個陣列共有的元素

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 張彤彧 浙江大學 給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在2行中給出2個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中...

找出不是兩個陣列共有的元素

給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在兩行中給出兩個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔,但行末不得有多餘的空格。題目保證至少存在乙個這樣的數字。同一數字不重...