20190812:两个数组的交集ⅠⅡ
两个数组的交集Ⅰ&Ⅱ
- 题目
- 大致思路
- 代码实现
题目
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:两个数组的交集ⅠⅡ相关推荐
- 两个数组的交集 II
两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...
- 数组-两个数组的交集(两个集合)
题意: 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...
- 9.LeetCode第350题---两个数组的交集2
一.目的 记录本题的主要目的是想让自己以及大家记住一个Java中的一个函数,可以去除数组中的后面无用的零 方法是Arrays.copyOfRange(res,0,index); 另外需要注意的是本题与 ...
- php 两个数组求交集_如何求两个数组的交集
题目描述 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2] 示例 2: 输入:nums1 = [4,9,5] ...
- Leetcode 350. 两个数组的交集 II 解题思路及C++实现
解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...
- 350. Intersection of Two Arrays II 两个数组的交集 II
Title 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = ...
- php两个数组找公共部分,PHP开发中如何查找两个数组的交集
在PHP中,可以使用内置函数array_intersect()来查找两个数组的交集,它可以返回两个数组的公共元素(相交部分).下面我们就来具体介绍一下. array_intersect()函数 基本语 ...
- leetcode初级算法4.两个数组的交集 II
leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...
- 349. 两个数组的交集 golang
349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: num ...
最新文章
- 向量与向量的叉积和向量与矩阵的叉积数学表达式与python 实现
- linux环境将python程序做成可执行
- JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案
- JavaScript 异步执行的学习笔记 - 什么是事件循环 Event loop?
- 后端:50 个 经典 Spring 面试题,值得收藏!
- 游标迭代器(过滤器)——Scan
- 【图像处理】透视变换 Perspective Transformation(含续加部分)
- (转)淘淘商城系列——SSM框架整合之逆向工程
- anaconda安装python包_Anaconda:安装或更新 Python 第三方包
- 每天进步一点点_抽奖程序
- Eclipse开启或取消快速导航栏(toggle breadcrumb)
- python爬取下载有妖气漫画网站免费漫画
- Python下载qq音乐歌曲实例教程
- 交换机的原理及其配置(一)
- 删除鼠标右键菜单多余选项的方法
- 思维方式-《终身成长》书中的精髓:决定人与人之间巨大差距的,是你的思维模式。
- 下载多张图片并压缩成压缩包
- Excel 数据透视表教程大全之 06 数据透视表八大优势,辅助列用途
- Idea打包:scala打成jar包
- 查询字符串最长公共前缀
热门文章
- Facebook 与 Twitter 再曝漏洞!用户数据再次被共享?
- 收下这份说明书,原来迈进智能计算的大门如此简单
- C 语言这么厉害,它自身是用什么语言写的?
- 2019 已过半,迅雷链的 Flag 完成了多少?
- 开源软件的中年危机如何破解?
- 超过 C++、压制 Java 与 C,Python 拔得 TIOBE 年度编程语言!
- Java 11 将至,除了 Oracle JDK 还有这些版本!
- CSDN技术分享——程序员如何快速上手区块链底层技术?
- JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
- linux sed工具,玩转Linux - 神级工具 sed awk