349. 两个数组的交集

89 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

一、题目描述:

349. 两个数组的交集 - 力扣(LeetCode) (leetcode-cn.com)

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

二、思路分析:

首先是判断两个数组的长度分别是为空的,只要有一方为空那就直接返回的就是个空的

如果两个都不为空,那么就两个开始遍历,一个一个都比较,如果相同的话,就将当前的元素和比较的元素都放进新创建的数组中

并且记录下当前的真,遍历完以后,发现不为真的时候直接返回空。

找到了几个算几个,然后就是把找到的数组进行一次排序,从小到大的位置上排号,排好序以后,又创建了一个比这个排序还要大

一个长度的数组,因为方便找出不一样的数组元素,就再这个最后的面的一个位置上添上了一个-1,就是为了遍历的时候将不同元素放在

一个新的数组中,又因为长度的不一样所以又创建了一个数组,将这个已经放好的数组再次放入这个新的数组中,长度固定好

只有长度固定好了才不会出现又0 的情况,最后返回最后创建的这个数组,ok;

三、AC 代码:

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        int arr[]=new int[nums1.length+nums2.length];
        int qwe[]=new int[0];
        if(nums2.length==0 && nums1.length==0){
            return qwe;
        }else if(nums1.length==0 && nums2.length!=0){
            return qwe;
        }else if(nums1.length!=0 && nums2.length==0){
            return qwe;
        }
    int p=0;
    boolean flag=false;
        for(int i=0;i<nums1.length;i++){
            for(int j=0;j<nums2.length;j++){
                if(nums1[i]==nums2[j]){
                    arr[p]=nums1[i];
                    arr[p+1]=nums2[j];
                    p++;
                    flag=true;
                }
            }
        }
        if(!flag){
            return qwe;
        }
        p++;
        for(int i=0;i<p-1;i++){
            for(int j=i+1;j<p;j++){
                if(arr[i]>arr[j]){
                    int t=arr[i];
                    arr[i]=arr[j];
                    arr[j]=t;
                }
            }
        }
        int k=0;
        int c[]=new int[p+1];
        c[p]=-1;
        for(int i=0;i<p;i++){
               c[k]=arr[i];
               k++;
        }
        int d[]=new int[k];
        int m=0;
        for(int i=0;i<k;i++){
            if(c[i]!=c[i+1]){
                d[m]=c[i];
                m++;
            }
        }
        int e[]=new int[m];
        int pp=0;
        for(int i=0;i<m;i++){
            e[pp]=d[i];
            pp++;
        }

        
        return e;
    }
}