Leetcode题解 350. Intersection of Two Arrays II

来源:互联网 发布:我的世界为什么用java 编辑:程序博客网 时间:2024/05/17 06:10

Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].

Note:
Each element in the result should appear as many times as it shows in both arrays.
The result can be in any order.

参照《程序员面试金典》字符串那章,有类似的题目。
这道题http://blog.csdn.net/xd_yu/article/details/51705646的升级版,也很简单。

public class Solution {    public int[] intersect(int[] nums1, int[] nums2) {        int len=100000;        int[] temp1=new int[len];        int[] temp2=new int[len];        int[] temp=new int[len];        for(int i=0;i<nums1.length;i++){            temp1[nums1[i]]++;        }        for(int i=0;i<nums2.length;i++){            temp2[nums2[i]]++;        }        int count=0;        for(int i=0;i<len;i++){            if(temp1[i]!=0&&temp2[i]!=0){               temp[i]=temp1[i]>temp2[i]?temp2[i]:temp1[i];               count+=temp[i];            }        }        int[] result=new int[count];        int pos=0;         for(int i=0;i<len;i++){            if(temp1[i]!=0&&temp2[i]!=0){                for(int j=0;j<temp[i];j++){                     result[pos]=i;                     pos++;                }            }        }        return result;    }}
0 0
原创粉丝点击