zoukankan      html  css  js  c++  java
  • 力扣LeetCode,两个数组的交集

    1、给定两个数组,编写一个函数来计算它们的交集。

    示例 1:

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

    示例 2:

    1 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    2 输出: [9,4]

    说明:

    • 输出结果中的每个元素一定是唯一的。
    • 我们可以不考虑输出结果的顺序。

    2、解题思路和代码如下所示:

      1 package com.leetcode;
      2 
      3 
      4 import java.util.*;
      5 
      6 /**
      7  * @ProjectName: dataConstruct
      8  * @Package: com.leetcode
      9  * @ClassName: ArrayIntersection
     10  * @Author: biehl
     11  * @Description: ${description}
     12  * @Date: 2020/3/15 10:55
     13  * @Version: 1.0
     14  */
     15 public class ArrayIntersection {
     16 
     17     /**
     18      * 给定两个数组,编写一个函数来计算它们的交集。
     19      *
     20      * @param nums1
     21      * @param nums2
     22      * @return
     23      */
     24     public int[] intersection(int[] nums1, int[] nums2) {
     25         // 将数组nums1的元素数据放入到集合Set中
     26         Set<Integer> setNums1 = new TreeSet<Integer>();
     27 //        for (int i = 0; i < nums1.length; i++) {
     28 //            setNums1.add(nums1[i]);
     29 //        }
     30         for (int num : nums1) {
     31             setNums1.add(num);
     32         }
     33 
     34 
     35         // 将数组nums2的元素数据放入到集合Set中
     36         Set<Integer> setNums2 = new TreeSet<Integer>();
     37 //        for (int i = 0; i < nums2.length; i++) {
     38 //            setNums2.add(nums2[i]);
     39 //        }
     40         for (int num : nums2) {
     41             setNums2.add(num);
     42         }
     43 
     44         List<Integer> result = new ArrayList<Integer>();
     45         // 开始遍历,查看第一个集合中的元素在第二个集合中有多少个
     46         Iterator<Integer> iterator = setNums1.iterator();
     47         while (iterator.hasNext()) {
     48             Integer next = iterator.next();
     49             // 如果第一个集合中的元素在第二个集合中,就进行保存操作
     50             if (setNums2.contains(next)) {
     51                 result.add(next);
     52             }
     53         }
     54 
     55         int[] res = new int[result.size()];
     56         for (int i = 0; i < result.size(); i++) {
     57             res[i] = result.get(i);
     58         }
     59         return res;
     60     }
     61 
     62 
     63     /**
     64      * 给定两个数组,编写一个函数来计算它们的交集。
     65      *
     66      * @param nums1
     67      * @param nums2
     68      * @return
     69      */
     70     public int[] intersection2(int[] nums1, int[] nums2) {
     71         // 将数组nums1的元素数据放入到集合Set中
     72         Set<Integer> setNums1 = new TreeSet<Integer>();
     73         for (int num : nums1) {
     74             setNums1.add(num);
     75         }
     76 
     77         // 声明一个动态数组,存放将要返回的数据
     78         List<Integer> result = new ArrayList<Integer>();
     79         for (int num : nums2) {
     80             // 如果包含了这个元素
     81             if (setNums1.contains(num)) {
     82                 // 将这个交集元素存储到动态数组中
     83                 result.add(num);
     84                 // 为了避免出现重复数据,可以将setNums1集合中重复的数据删除掉。下次就不会出现重复的数据了。
     85                 setNums1.remove(num);
     86             }
     87         }
     88 
     89         // 将动态数据中的数据,封装返回即可
     90         int[] res = new int[result.size()];
     91         for (int i = 0; i < result.size(); i++) {
     92             res[i] = result.get(i);
     93         }
     94         return res;
     95     }
     96 
     97     public static void main(String[] args) {
     98 //        int[] nums1 = new int[]{1, 2, 2, 1};
     99 //        int[] nums2 = {2, 2};
    100         int[] nums1 = new int[]{4, 9, 5};
    101         int[] nums2 = {9, 4, 9, 8, 4};
    102         ArrayIntersection arrayIntersection = new ArrayIntersection();
    103         int[] intersection = arrayIntersection.intersection2(nums1, nums2);
    104         for (int i = 0; i < intersection.length; i++) {
    105             System.out.println(intersection[i]);
    106         }
    107     }
    108 
    109 }
  • 相关阅读:
    服务器的Redis连接不上解决方案
    给大家推荐一个很好的自学网站
    简单说下HashMap的实现原理
    LinkedList源码解析
    你要了解的jvm
    单例设计
    百度编辑器删除旧的图片
    Ueditor 单图、多图、视频、附件的上传及在线管理总结
    上传新图片删除旧图片
    webapi发布IIS时出现500.19错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")或者是通过包含overrideModeDefault="Deny"....
  • 原文地址:https://www.cnblogs.com/biehongli/p/12496640.html
Copyright © 2011-2022 走看看