#10651: 提供新想法


ccu499410020 (笹川了平)

學校 : 國立中正大學
編號 : 18334
來源 : [118.171.227.158]
最後登入時間 :
2023-12-30 20:27:06
d478. 共同的數 - 簡易版 | From: [36.239.39.35] | 發表日期 : 2016-01-23 21:44

因為題目有說他們各自的數列不重複且已排序

所以其實可以把兩數列 merge 起來

找到成雙成對的就是兩人重複的數

這個方法可以讓時間複雜度降到 O(nm)

-------------------------------

雖然說我懶得寫 merge fuction

而直接用內建的 qsort 啦 <= O(nm log m)

 
#10806: Re:提供新想法


johnnyjong823 (johnny)

學校 : 龍華科技大學
編號 : 41743
來源 : [210.59.162.42]
最後登入時間 :
2022-07-01 12:14:21
d478. 共同的數 - 簡易版 | From: [1.161.250.40] | 發表日期 : 2016-03-24 15:26

因為題目有說他們各自的數列不重複且已排序

所以其實可以把兩數列 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,有點緊繃

 

 
ZeroJudge Forum