LeetCode 349 兩個陣列的交集

2021-10-03 08:15:24 字數 1248 閱讀 1945

1. 題目鏈結

2. 題目描述

給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]

輸出: [2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出: [9,4]

說明:

輸出結果中的每個元素一定是唯一的。

我們可以不考慮輸出結果的順序。

3. 題目解析

根據題目要求,兩個陣列的交集,可以不考慮輸出結果的順序,那麼可以先用qsort函式對兩個陣列排序,然後從小到大比較nums1[i] 和 nums2[j],較小的下標加一,相等時,下標同時加一。因為結果中的每個元素是唯一的,增加去重判斷,即 nums1[i] == nums1[i + 1] 時跳過。

4. **實現

/**

* note: the returned array must be malloced, assume caller calls free().

*/#define max(a, b) (a > b ? a : b)

int comp(const void *a, const void *b) 

int* intersection(int* nums1, int nums1size, int* nums2, int nums2size, int* returnsize)

int cnt = 0;

int i = 0, j = 0;

int *res = (int *)malloc(sizeof(int) * max(nums1size, nums2size));

qsort(nums1, nums1size, sizeof(int), comp);

qsort(nums2, nums2size, sizeof(int), comp);

while (i 

if (nums1[i] > nums2[j] || (j 

if (nums1[i] == nums2[j]) 

}*returnsize = cnt;

return res;

}

5. 提交記錄

leetcode349 兩個陣列交集

思想 題目要求給定兩個陣列,編寫乙個函式來計算它們的交集。1.定義變數ans儲存兩個陣列的交集 2.將nums1和nums2去重 3.判斷nums1中的元素num是否在nums2中,若在則新增ans中,不在則繼續for迴圈 class solution object def intersection...

LeetCode349 兩個陣列的交集

給定兩個陣列,寫乙個函式來計算它們的交集。例子 給定num1 1,2,2,1 nums2 2,2 返回 2 題目分析 首先,將num1的元素存進s1,完成了一步去重 同樣,將num2的元素存進s2,也完成了一步去重 將所有的元素存進s.所以s s1 展示 class solution for aut...

Leetcode 349 兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。class solutio...