leetcode217-Intersection of Two Arrays

2024-04-01 01:20

本文主要是介绍leetcode217-Intersection of Two Arrays,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这道题目要求俩个数组的交集,且不能重复,我们可以很自然的想到一种办法,就是先遍历第一个数组,将元素存入set,然后再遍历第二个数组,如果元素在set中存在那就说明该元素是肯定存在于第一个数组中的,同时可以把该元素也存入一个set(因为要求输出数组中元素是唯一的),set相对来说数据结构要比数组复杂,所以cpu时间也不会低

还有另外一种方法,这种在数组类算法中一定要考虑到这种方法,就是用数组元素的值作为另外一个数组的下标,这种思路在排序以及这个题目中都是有效的,当然前提一定是下标的范围是有限的,比如这道题目他就限制了数组元素的值不超过1000,我们可以新建一个1001长度的数组,把第一个数组的元素作为新数组的下标,值为1存入,然后遍历第二个数组,值如果是1的可以将值更新为2。然后我们再遍历这个新的数组,值为2的元素对应的下标就是俩个数组的一些交际元素了

import java.util.HashSet;
import java.util.Set;public class intersectionofTwoArrays {public static void main(String[] args) {int[] nums1 = {4,9,5};int[] nums2 = {9,4,9,8,4};int[] res = getOnly(nums1,nums2);for(int i = 0;i<res.length;i++) {System.out.println(res[i]);}System.out.println("================");int[] arr = getOnly(nums1,nums2);for(int i = 0;i<arr.length;i++) {System.out.println(arr[i]);}}public static int[] getOnlyOtherVersion(int[] nums1,int[] nums2) {int [] arr = new int[1001];for(int i = 0;i < nums1.length;i++) {arr[nums1[i]] = 1;}for(int i = 0;i<nums2.length;i++) {if(arr[nums2[i]] == 1) {arr[nums2[i]] = 2;}}int len = 0;for(int i = 0;i<arr.length;i++) {if(arr[i] == 2) {len++;}}int j = 0;int[] res = new int[len];for(int i = 0;i<arr.length;i++) {if(arr[i] == 2) {res[j++] = i;}}return res;}public static int[] getOnly(int[] nums1,int[] nums2) {Set set = new HashSet();for(int i = 0;i<nums1.length;i++) {set.add(nums1[i]);}Set<Integer> setOne = new HashSet();for(int i = 0;i<nums2.length;i++) {if(set.contains(nums2[i])) {setOne.add(nums2[i]);}}int j = 0;int[] res = new int[setOne.size()];for(int i : setOne) {res[j++] = i;}return res;}
}

这篇关于leetcode217-Intersection of Two Arrays的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/865877

相关文章

Java多线程编程模式实战指南:Two-phase Termination模式

文章来源: http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-termination?utm_source=infoq&utm_campaign=user_page&utm_medium=link 文章代码地址: https://github.com/Visce

[LeetCode] 583. Delete Operation for Two Strings

题:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目 Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in

【HDU】4873 ZCC Loves Intersection 数学

传送门:【HDU】4873 ZCC Loves Intersection 题目大意:给你一个D维的空间,每个维度都有一条线段平行与该维度属于的轴(如X,Y,Z轴),且线段的端点坐标取值范围0~N-1,保证左端点严格小于右端点(除该维度,其他维度的值两端点均相等)。现在告诉你每条线段的左右端点的坐标都是随机的,0~N-1随机到的概率是完全相等的!现在如果两条线段如果相交于一点,你可以获得一点

CodeForces 425C Sereja and Two Sequences

题意: 两组数字a和b  如果a[i]等于b[j]  则可将a[i]和b[j]前所有数字删掉  这种操作花费e体力  得到1元钱  或者一次删掉所有数字  这种操作花费等于曾经删除的所有数字个数  做完后得到所有钱  问 一共s体力 可以得到多少钱 思路: dp+二分 由数据可知最多拿到300元钱  因此可以定义  dp[i][j]表示有i元钱时  b串删除到了j处时  a串删到的位

poj 1849 Two(树形dp求直径)

树的直径:一棵树中两个点间的最长距离。 Description The city consists of intersections and streets that connect them.  Heavy snow covered the city so the mayor Milan gave to the winter-service a list of streets that ha

Longest Substring with At Most Two Distinct Characters

Given a string, find the length of the longest substring T that contains at most 2 distinct characters. For example,Given s = “eceba”, T is "ece" which its length is 3. 思路:同向双指针,跟Longest Substrin

Two to One——C语言提高题【7 kyu】

一、原题 链接:Training on Two to One | Codewars Take 2 strings s1 and s2 including only letters from a to z. Return a new sorted string (alphabetical ascending), the longest possible, containing distinct

JavaScript - First step - Arrays

创建数组 任何类型的对象,都可以放入数组中。 var shopping = ['bread', 'milk', 'cheese', 'hummus', 'noodles'];shopping;// (5) ["bread", "milk", "cheese", "hummus", "noodles"]var sequence = [1, 1, 2, 3, 5, 8, 13];var ra

LeetCode --- Median of Two Sorted Arrays

第一次在csdn上写备忘录,以前一直是在笔记本上写,主要是笔记本上可以随意写,只要自己能看懂,在网页上多少都受些限制,另外一方面也是想锻炼下写作能力,为以后的论文做基础吧!最近偶尔上leetcode练些题目,所以也就以这个为主题写一篇试试看,因为能力不足,理解或言辞上会有错误,还望访者不吝赐教,我定当万分感激。 好了,废话也说完了,现在进入正题: 题目: There are two sor

2pc_two phase commit详情

文章目录 1. two phase commit protocol1.假设前提2. 算法概述3. 缺点4. 详情1. coordinator 端来看2. cohorts端 5. 正确性分析6. 简单总结 看2pc和3pc看的晕晕乎乎的,看了很多博客,感觉说的都不够细致,看起来也容易犯晕,找到了两篇英文文档(不算原文),看起来好像是清楚一些,有些时候这些协议类的东西研读,如果不是