1. 程式人生 > >leetcode349. 兩個陣列的交集 C語言

leetcode349. 兩個陣列的交集 C語言

這裡寫圖片描述
考慮到輸出結果中的每個元素一定是唯一的。
用的笨辦法,新建一個數組3用來存放交集,雙層迴圈,陣列1裡的數逐個與陣列2進行比較,若相等且之前不在陣列3中,則放入陣列3。
但其實這道題可以搜到很多簡單高效的解決方法,比如先排序再比較、或是使用set等等。

/**
 * Return an array of size *returnSize.
 * Note: The returned array must be malloced, assume caller calls free().
 */

int* intersection(int* nums1, int nums1Size, int
* nums2, int nums2Size, int* returnSize) { int i,j,k=0,flag=0; int lens=nums1Size>nums2Size?nums1Size:nums2Size; int* re =(int*)malloc(sizeof(int)*lens); if(nums1Size==0) { * returnSize=k; return nums1; } if(nums2Size==0) { * returnSize=k; return nums2; } for(i=0;i<nums1Size;i++) {//flag用來標識陣列re中是否已經存在nums1和nums2的交集,flag==0,則只要比較nums2[j]==nums1[i]
if(flag==0) for(j=0;j<nums2Size;j++) { if(nums2[j]==nums1[i]) {flag=1;re[k++]=nums1[i];break;} } //flag==1說明re中已存在交集數字,則nums1[i]還需要與re陣列中的每個元素進行比較,保證輸出結果中的每個元素一定是唯一的 else if(flag==1) {int t,f=0; for (t=0;t<k;t++) if
(nums1[i]==re[t]) { f=1;break;} if(f==1) continue;//一開始寫成了break for(j=0;j<nums2Size;j++) { if(nums2[j]==nums1[i]) { flag=1;re[k++]=nums1[i];break;} } } } * returnSize=k; return re; }

相關推薦

leetcode349. 陣列交集 C語言

考慮到輸出結果中的每個元素一定是唯一的。 用的笨辦法,新建一個數組3用來存放交集,雙層迴圈,陣列1裡的數逐個與陣列2進行比較,若相等且之前不在陣列3中,則放入陣列3。 但其實這道題可以搜到很多簡單高效的解決方法,比如先排序再比較、或是使用set等等。

leetcode349. 陣列交集陣列

題目: 給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [9,4]

leetcode349陣列交集

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

閑來無事看好玩的C語言面試題

當前 下午 沒有 fontsize 機器 比較 linu 需要 -s 昨天最後一天工作日,讓我碰到了兩個有意思的C語言編程問題,周末前權當輕松一下,挺有意思就過去了,因為今晚雨夜通宵,就把它們記錄了下來。 事件1:關於結構體對齊和packed屬性 下午跟同事下樓抽煙,聊

好玩的C語言程式

同學考我的一道題。 1.寫一個c語言程式,輸出hello,刪掉程式碼的第一個字元,輸出world。 2.寫一個c語言程式,輸出hello,刪掉程式碼的最後一個字元,輸出world。 想了一會,寫出了這兩個程式碼,哈哈,再次膜拜一下c語言的語法。 Think time 。

C語言實現 求陣列交集

題目描述 分析 其中一種邏輯比較清晰的方法就是分別對兩個陣列進行排序,再應用二路歸併排序的思想來找出交集。下面是實現的程式碼,其中採用的排序方法是選擇排序。 程式碼實現 void Selec

LeetCode349陣列交集

給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [9,4] 說明:

Leetcode 陣列交集 II(c++)

給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [4,9] 說明:

C++ Leetcode初級演算法之陣列交集 II

給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [4,9] 說明: 輸

PTA - 找出不是陣列共有的元素 (C語言) - 40大小陣列實現

7-8 找出不是兩個陣列共有的元素 (20 分) 給定兩個整型陣列,本題要求找出不是兩者共有的元素。 輸入格式: 輸入分別在兩行中給出兩個整型陣列,每行先給出正整數N(≤20),隨後是N個整數,其間以空格分隔。 輸出格式: 在一行中按照數字給出的順序輸出不是兩

c語言實現陣列中的內容進行交換。(陣列一樣大)

方法一:建立新的陣列。 #include<stdio.h> #include<stdlib.h> int main() { int arr1[5] = { 1, 2, 3, 4, 5, }; int arr2[5] = { 0, 6, 7, 8, 9, }

C語言中交換陣列的值

  昨天我們做了交換兩個變數的值,今天我們來看看如何交換兩個陣列的值(陣列內數的個數相同)。   我們可以這樣考慮,陣列不過是數的集合,既然我們會交換兩個數的值,那麼陣列只不過是多次交換兩個數的值,而且陣列內素下標又是依次增大的,所以這裡可以使用一個for迴圈。

leetcode刷題--基礎陣列--陣列交集C

給定兩個陣列,編寫一個函式來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出: [4,

LeetCode349. Intersection of Two Arrays(陣列交集)JAVA實現

Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2] Examp

LeetCode349.Intersection of Two Arrays(陣列交集)

Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2] Example 2: I

C語言實現判斷陣列中是否有相同的元素,有就輸出“有”,沒有則輸出“沒有”

建立兩個陣列,讓第一個陣列中的元素依次與第二個陣列中的元素比較(想讓第一個陣列中的第一個元素與第二個陣列中每個元素比較),若找到相同的,則計數並且計數停止,若計數不為零,則有相同元素,否則沒有。test.c#include<stdio.h> int main()

C語言】比較陣列中是否有相同的元素

我們都知道,要判斷兩個陣列中是否有相同的元素,只需要兩層for迴圈,但是在for迴圈的內部,我們要注意什麼時候跳出迴圈,這個是非常重要的,不能一直輸出有,但是也不能既輸出有,又輸出沒有! 下面是第一種

判斷陣列中是否有相同的元素 C語言

判斷兩個陣列中是否有相同的元素 方法一:用第一個陣列的第一個元素遍歷第二個陣列的每一個元素,然後依次用第一個陣列的第二個第三個等等元素遍歷陣列二的每一個元素。 #include<stdio.h> int main() { int i =

C語言用指標實現陣列值互換

C語言用指標實現兩陣列的值互換 #include <stdio.h> #define N 10 void ReadData(int a[], int n); void PrintDa

【LeetCode】 350. 陣列交集 II

1.題目 給定兩個陣列,編寫一個函式來計算它們的交集。 2.思路 此題對第一題的區別在於可以輸出相同數字 例如:輸入【1,2,2,1】,【2,2】;輸出【2,2】 step1:遍歷兩個向量; step2:把兩個陣列重複的元素加入到vector res中(可以