1.描述
計算兩個陣列的交
注意事項
每個元素出現次數得和在陣列裡一樣
答案可以以任意順序給出
樣例 nums1 =[1, 2, 2, 1]
, nums2 =[2, 2]
, 返回[2, 2]
.
2.分析
和兩陣列的交類似,不過這裡不需要去掉重複元素的操作。
3.**
class solution {
public:
/*** @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/vectorintersection(vector& nums1, vector& nums2) {
// write your code here
vectorv;
int i=0,j=0;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
while(inums2[j])
j++;
else if(nums1[i]4.總結
這裡首先對兩陣列進行排序進而對類似位置的元素進行比較,大元素去找另乙個陣列的大元素去比較。
如果不排序直接對兩個陣列的所有元素進行遍歷比較會出現這樣乙個問題。
假設nums1=[7,7],nums2=[6,7],正確結果為[7],但如果遍歷nums2和nums1中的每乙個元素作比較,
nums2中的7會和nums1中的7比較兩次,得到[7,7],因此如果直接採用簡單的遍歷比較還需要判斷出現
次數的問題。
LintCode 兩陣列的交 II
題目描述 計算兩個陣列的交 注意事項 每個元素出現次數得和在陣列裡一樣 答案可以以任意順序給出 樣例 nums1 1,2,2,1 nums2 2,2 返回 2,2 做題思路 先給兩個陣列進行排序,方便比較,在兩個陣列長度之內進行比較,如果數值相等,放進新陣列中,然後兩個陣列的下標同時移動,如果不相等...
兩陣列的交 和 兩陣列的交
題目描述 計算兩個陣列的交 解題思路 這兩個題我放在一起了,只要會兩個陣列的交就行了,兩個陣列的交 幾乎一樣,就是刪了一點 先分別對兩個陣列排序,然後分別比較兩個陣列的元素,如果有相同的元素插入到新的陣列裡,將這個數儲存起來,用於後面去掉重的元素,如果兩個元素不一樣,繼續比較剩下的元素。兩個陣列的交...
兩陣列的交
返回兩個陣列的交 樣例nums1 1,2,2,1 nums2 2,2 返回 2 先排序,從nums1陣列中取數判斷時,若nums1 i nums2 j 才繼續遍歷nums2,並用乙個k值記錄nums2中比nums1 i 1 小的最大數的角標,下次判斷nums i 時nums2從k值開始取。class...