這是我試圖解決凱迪的挑戰。 challenge。 我的想法是將jack擁有的所有CD存儲在一個數組中,然後在陣列上對jill擁有的每個CD執行二進制搜索。 如果搜索返回true,我增加一個計數器。如果不是,我什麼都不做。 這是我的解決方案請問爲什麼不能使用此解決方案?
import java.util.*;
import java.util.Scanner;
public class Hello {
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] narr = new int[n];
for (int i = 0; i<n; i++){
narr[i] = in.nextInt();
}
int count = 0;
for (int i=0; i< m; i++){
int val = in.nextInt();
int lo =0;
int hi = n-1;
while(lo<=hi){
int md = lo + (hi - lo)/2;
if (val<narr[md]) hi =md-1;
else if(val>narr[md]) lo = md+1;
else{
count++;
break;
}
}
}
System.out.println(count);
in.close();
}
}
該方案未通過第二次測試的情況。我在互聯網上看到過類似的解決方案。像這樣link 請你能告訴我我失蹤了什麼嗎?
謝謝。
我也使用hashSet存儲插孔cds,然後增加一個計數器,如果該集合包含任何Jills cds。 該解決方案也失敗了第二個測試用例。
歡迎來到Stack Overflow!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然有問題,請隨時返回更多詳情。 –
非常感謝。我有很多要學習的。 – ibukun