两个数组的交集Ⅰ&Ⅱ

  • 题目
  • 大致思路
  • 代码实现

题目

1:返回的数组中不能包含重复值

2.必须将所有数字列出来,包括重复的数字

大致思路

第一题的思路:使用set来实现,第一个set存放第一个数组中出现的值,第二个set遍历之前先判断第二个数组的数字是否包含在第一个set中,如果包含,则直接将其添加到第二个set中,最后将set中的值赋值到新的数组中即可返回。由于set的特性,不会包含重复。也就是题一。

第二题的思路:两个数组进行排序,再进行遍历,比较即可得到重复的值,没什么思路上的问题,比第一个简单一点。本组代码未放入eclipse测试,但是leetcode是提交通过的。

代码实现

//第一题:两个数组的交集Ⅰ
package com.immunize.leetcode.intersect;import java.util.HashSet;/*** 两个数组的交集1:找到两个数组的相同值,并返回新数组,但是其中的值是唯一的。* * @author Mr IMMUNIZE**/
public class FindTheSame {public int[] intersect(int[] nums1, int[] nums2) {HashSet<Integer> record = new HashSet();HashSet<Integer> result = new HashSet();for (int num : nums1) {record.add(num);}for (int num : nums2) {if (record.contains(num)) {result.add(num);record.remove(num);}}int index = 0;int[] resultSet = new int[result.size()];for (int i : result) {resultSet[index++] = i;}return resultSet;}
}package com.immunize.leetcode.intersect;/*** 测试:寻找两个数组中的相同值,并返回新的数组* * @author Mr IMMUNIZE**/
public class FindSameTest {public static void main(String[] args) {FindTheSame fs = new FindTheSame();int[] nums1 = { 1, 2, 2, 1 };int[] nums2 = { 2, 2 };int[] resultSet = fs.intersect(nums1, nums2);for (int num : resultSet) {System.out.print(num + " ");}}}-------------------------------------------------------------------------------
//第二题:两个数组的交集Ⅱ
public class Solution {public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);//底层使用了快排,O(nlogn)Arrays.sort(nums2);List<Integer> list=new ArrayList<Integer>();for(int i=0,j=0;i<nums1.length&&j<nums2.length;){if(nums1[i]==nums2[j]){ list.add(nums1[i]);i++;j++;}else if(nums1[i]>nums2[j]){j++;}else{i++;}}int[]res=new int[list.size()];for(int i=0;i<res.length;i++){res[i]=list.get(i);}return res;}
}

20190812:两个数组的交集ⅠⅡ相关推荐

  1. 两个数组的交集 II

    两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...

  2. 数组-两个数组的交集(两个集合)

    题意: 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...

  3. 9.LeetCode第350题---两个数组的交集2

    一.目的 记录本题的主要目的是想让自己以及大家记住一个Java中的一个函数,可以去除数组中的后面无用的零 方法是Arrays.copyOfRange(res,0,index); 另外需要注意的是本题与 ...

  4. php 两个数组求交集_如何求两个数组的交集

    题目描述 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...

  5. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

    解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...

  6. 350. Intersection of Two Arrays II 两个数组的交集 II

    Title 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = ...

  7. php两个数组找公共部分,PHP开发中如何查找两个数组的交集

    在PHP中,可以使用内置函数array_intersect()来查找两个数组的交集,它可以返回两个数组的公共元素(相交部分).下面我们就来具体介绍一下. array_intersect()函数 基本语 ...

  8. leetcode初级算法4.两个数组的交集 II

    leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...

  9. 349. 两个数组的交集 golang

    349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: num ...

最新文章

  1. 向量与向量的叉积和向量与矩阵的叉积数学表达式与python 实现
  2. linux环境将python程序做成可执行
  3. JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案
  4. JavaScript 异步执行的学习笔记 - 什么是事件循环 Event loop?
  5. 后端:50 个 经典 Spring 面试题,值得收藏!
  6. 游标迭代器(过滤器)——Scan
  7. 【图像处理】透视变换 Perspective Transformation(含续加部分)
  8. (转)淘淘商城系列——SSM框架整合之逆向工程
  9. anaconda安装python包_Anaconda:安装或更新 Python 第三方包
  10. 每天进步一点点_抽奖程序
  11. Eclipse开启或取消快速导航栏(toggle breadcrumb)
  12. python爬取下载有妖气漫画网站免费漫画
  13. Python下载qq音乐歌曲实例教程
  14. 交换机的原理及其配置(一)
  15. 删除鼠标右键菜单多余选项的方法
  16. 思维方式-《终身成长》书中的精髓:决定人与人之间巨大差距的,是你的思维模式。
  17. 下载多张图片并压缩成压缩包
  18. Excel 数据透视表教程大全之 06 数据透视表八大优势,辅助列用途
  19. Idea打包:scala打成jar包
  20. 查询字符串最长公共前缀

热门文章

  1. Facebook 与 Twitter 再曝漏洞!用户数据再次被共享?
  2. 收下这份说明书,原来迈进智能计算的大门如此简单
  3. C 语言这么厉害,它自身是用什么语言写的?
  4. 2019 已过半,迅雷链的 Flag 完成了多少?
  5. 开源软件的中年危机如何破解?
  6. 超过 C++、压制 Java 与 C,Python 拔得 TIOBE 年度编程语言!
  7. Java 11 将至,除了 Oracle JDK 还有这些版本!
  8. CSDN技术分享——程序员如何快速上手区块链底层技术?
  9. JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
  10. linux sed工具,玩转Linux - 神级工具 sed awk