2つの配列の349交差点
イージー
与えられた2つの配列が、その交点を計算する関数を記述します。
例1:
入力:nums1 = [1,2,2,1]、nums2 = [2,2]
出力:[2]
例2:
入力:nums1 = [4,9,5]、nums2 = [9,4,9,8,4]
出力:[9,4]
注意:
- 結果の各要素は一意でなければなりません。
- 結果は、任意の順序にすることができます。
パッケージleetcode.easy。 パブリッククラスIntersectionOfTwoArrays { 公共のint [] set_intersection(はjava.util.HashSet <整数> SET1、はjava.util.HashSet <整数> SET2){ INT []出力=新しいINT [set1.size()]。 INT IDX = 0; 以下のための(整数S:SET1){ IF(set2.contains(S)){ 出力[IDX ++] = S。 } } java.util.Arrays.copyOf(出力、IDX)を返します。 } 公共のint [] intersection1を(INT [] nums1、INT [] nums2){ はjava.util.HashSet <整数> SET1 =新しいはjava.util.HashSet <整数>(); (整数N:nums1)用{ set1.add(N) } } はjava.util.HashSet <整数> SET2 =新しいはjava.util.HashSet <整数>(); (整数N:nums2)用{ set2.add(N) IF(set1.size()<set2.size()){ 戻りset_intersection(SET1、SET2)。 } {他 戻りset_intersection(SET2、SET1)。 } } 公共のint [] intersection2が(INT [] nums1、INT [] nums2){ はjava.util.HashSet <整数> SET1 =新しいはjava.util.HashSet <整数>(); (整数N:nums1)用{ set1.add(N) } はjava.util.HashSet <整数> SET2 =新しいはjava.util.HashSet <整数>(); (整数N:nums2)用{ set2.add(N) } set1.retainAll(SET2)。 INT []出力=新しいINT [set1.size()]。 INT IDX = 0; {(SET1 INT S)のための 出力[IDX ++] = S。 } 出力を返します。 } @ org.junit.Test 公共ボイドTEST1(){ INT [] nums1 = {1、2、2、1}。 INT [] nums2 = {2,2}。 INT [] = intersection1を(nums1、nums2)をもたらします。 以下のために(INT iが= 0; I <result.length; I ++){ System.out.print(結果[I] + "「)。 } のSystem.out.println(); = intersection2が(nums1、nums2)をもたらします。 以下のために(INT iが= 0; I <result.length; I ++){ System.out.print(結果[I] + "「)。 } のSystem.out.println(); } @ org.junit.Test 公共ボイドTEST2(){ INT [] nums1 = {4,9、5}。 INT [] nums2 = {9,4、9、8、4}。 INT [] = intersection1を(nums1、nums2)をもたらします。 {(I ++; I <result.length iが0 = INT)のために System.out.print(結果[I] + "「)。 } のSystem.out.println(); = intersection2が(nums1、nums2)をもたらします。 以下のために(INT iが= 0; I <result.length; I ++){ System.out.print(結果[I] + "「)。 } のSystem.out.println(); } }