因為題目有說他們各自的數列不重複且已排序
所以其實可以把兩數列 merge 起來
找到成雙成對的就是兩人重複的數
這個方法可以讓時間複雜度降到 O(nm)
-------------------------------
雖然說我懶得寫 merge fuction
而直接用內建的 qsort 啦 <= O(nm log m)
因為題目有說他們各自的數列不重複且已排序
所以其實可以把兩數列 merge 起來
找到成雙成對的就是兩人重複的數
這個方法可以讓時間複雜度降到 O(nm)
-------------------------------
雖然說我懶得寫 merge fuction
而直接用內建的 qsort 啦 <= O(nm log m)
package 高中生;
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class d478共同的數簡易版 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int time = sc.nextInt();
int nu = sc.nextInt();
int[] n1 = new int[nu*2];
while (time-- > 0) {
int count = 0;
for (int i = 0; i < n1.length ; i++) {
n1[i] = sc.nextInt();
}
Arrays.sort(n1);
for (int i = 0; i < n1.length - 1; i++) {
if (n1[i] == n1[i + 1]) {
count++;
i++;
}
}
System.out.println(count);
}
}
}
}
我將此實做出來
AC
花了2.5s,有點緊繃