LeetCode-2つの配列の交差II【Java|LeetCode初級】
1464 ワード
2つの配列を指定し、関数を記述して交差を計算します.
例1:
例2:
説明:出力結果の各要素の出現回数は、要素が2つの配列に現れる回数と一致する必要があります. 出力結果の順序を考慮しなくてもいいです.
ステップ:与えられた配列が順序付けされている場合?アルゴリズムをどのように最適化しますか? nums 1のサイズがnums 2よりずっと小さい場合、どの方法が優れていますか? nums 2の要素がディスクに格納されている場合、ディスクメモリは限られており、すべての要素を一度にメモリにロードすることはできません.どうすればいいですか?
解答の構想:まず配列を並べ替えて、それから2つのカーソルを使って再検査の操作を行います
未完待機・・・
例1:
: nums1 = [1,2,2,1], nums2 = [2,2]
: [2,2]
例2:
: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
: [4,9]
説明:
ステップ:
解答の構想:まず配列を並べ替えて、それから2つのカーソルを使って再検査の操作を行います
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
List tmp = new ArrayList();
int index = 0;
int len1 = 0;//
int len2 = 0;//
while(len1 < nums1.length && len2 < nums2.length){
if(nums1[len1] == nums2[len2]){
tmp.add(nums1[len1]);
len1++;
len2++;
index++;
}else if(nums1[len1] < nums2[len2]){
len1++;
}else{
len2++;
}
}
int[] result = new int[tmp.size()];
for (int k = 0; k < result.length; k++){
result[k] = tmp.get(k);
}
return result;
}
}
未完待機・・・