#4268: 有人用JAVA寫出這題嗎?


tomoyaken14 (歐練)

學校 : 不指定學校
編號 : 6922
來源 : [122.117.127.202]
最後登入時間 :
2024-04-15 14:31:55
d478. 共同的數 - 簡易版 | From: [111.254.210.153] | 發表日期 : 2010-09-21 14:35

用了二元搜尋法還是逾時三秒

還有更快的方法嗎??

感謝...微笑

 
#4270: Re:有人用JAVA寫出這題嗎?


leopan0922 (zz)

學校 : 臺北市立成功高級中學
編號 : 6612
來源 : [140.113.225.106]
最後登入時間 :
2016-08-15 15:44:07
d478. 共同的數 - 簡易版 | From: [219.70.171.51] | 發表日期 : 2010-09-21 20:42

用了二元搜尋法還是逾時三秒

還有更快的方法嗎??

感謝...微笑


話說我不是用JAVA寫的

但是我的方法應該比較快

就是兩個陣列都從頭開始跑

看哪個數字比較小就移往下一個數字

如果兩邊一樣就答案+1

兩邊同時移往下一個數字

這樣大概執行n次左右

比你的 nlgn 快

 
#4274: Re:有人用JAVA寫出這題嗎?


tomoyaken14 (歐練)

學校 : 不指定學校
編號 : 6922
來源 : [122.117.127.202]
最後登入時間 :
2024-04-15 14:31:55
d478. 共同的數 - 簡易版 | From: [111.254.197.166] | 發表日期 : 2010-09-22 21:03

用了二元搜尋法還是逾時三秒

還有更快的方法嗎??

感謝...微笑


話說我不是用JAVA寫的

但是我的方法應該比較快

就是兩個陣列都從頭開始跑

看哪個數字比較小就移往下一個數字

如果兩邊一樣就答案+1

兩邊同時移往下一個數字

這樣大概執行n次左右

比你的 nlgn 快

感謝回答

小弟我再試試看~



 

 
#5059: Re:有人用JAVA寫出這題嗎?


Kaitang (凱)

學校 : 國立屏東大學
編號 : 5159
來源 : [163.24.254.195]
最後登入時間 :
2013-10-22 15:10:17
d478. 共同的數 - 簡易版 | From: [163.24.253.85] | 發表日期 : 2011-04-16 00:42

用上面大大提供的方法 應該是n沒錯 但還是tle

//d478: 共同的數 - 簡易版

import java.util.Scanner;

 

public class d478 {

public static void main(String[] args) {

Scanner sin = new Scanner(System.in);

int max = sin.nextInt();

int array = sin.nextInt();

int a[] = new int [array];

int b[] = new int [array];

for(int i=0;i<max;i++){

int ans =0;

for(int j=0;j<array;j++){

a[j] = sin.nextInt();

}

for(int j=0;j<array;j++){

b[j] = sin.nextInt();

}

for(int j=0,k=0;j<array&&k<array;){

if(a[j]==b[k]){

ans +=1;

j = j+1;

k = k+1;

}

else if(a[j]>b[k])

k = k+1;

else if(a[j]<b[k])

j = j+1;

}

System.out.println(ans);

}

}

}

 

 
#5060: Re:有人用JAVA寫出這題嗎?


past (遺憾的臭氧)

學校 : 臺北市立麗山高級中學
編號 : 8381
來源 : [111.250.64.129]
最後登入時間 :
2012-06-04 13:50:45
d478. 共同的數 - 簡易版 | From: [118.166.117.253] | 發表日期 : 2011-04-16 14:34

用上面大大提供的方法 應該是n沒錯 但還是tle

//d478: 共同的數 - 簡易版

import java.util.Scanner;

Java 的話不要用 Scanner 類別 
#5729: Re:有人用JAVA寫出這題嗎?


wemee (阿勇)

學校 : 國立北港高級中學
編號 : 4621
來源 : [220.135.3.103]
最後登入時間 :
2024-09-13 14:26:27
d478. 共同的數 - 簡易版 | From: [220.131.26.88] | 發表日期 : 2011-08-29 15:37

用上面大大提供的方法 應該是n沒錯 但還是tle

//d478: 共同的數 - 簡易版

import java.util.Scanner;

 

public class d478 {

public static void main(String[] args) {

Scanner sin = new Scanner(System.in);

int max = sin.nextInt();

int array = sin.nextInt();

int a[] = new int [array];

int b[] = new int [array];

for(int i=0;i

int ans =0;

for(int j=0;j

a[j] = sin.nextInt();

}

for(int j=0;j

b[j] = sin.nextInt();

}

for(int j=0,k=0;j

if(a[j]==b[k]){

ans +=1;

j = j+1;

k = k+1;

}

else if(a[j]>b[k])

k = k+1;

else if(a[j]

j = j+1;

}

System.out.println(ans);

}

}

}

 

我第一次測試AC 但是MLE:記憶體超出限制

然後加上System.gc(); 收集垃圾指令

就可以了 

 
ZeroJudge Forum