名題精選百則_題1.3
[INPUT]
two number set f[ ] and g[ ] which are sorted in increment order
ex.
f =1,3,5,7,9
g =1,5,6,8,10
lengthF= number of elements in f
lengthG= number of element in g
[OUTPUT]
f[j]=g[i] means "equal" , count totally "equal" value number
ex.
g[0]=f[0]=1
g[1]=f[2]=5
therefore, totally "equal" value number is 2
[THINK]
f, g都是已經排序好的數列
借用Q1-2的想法,f[idxF]==g[idxG]表示f[idxF], g[idxG]之前的數不用拿來做比較
分成3種情況
Case 1: f[idxF]==g[idxG]
Case 2: f[idxF]>g[idxG]
Case 3: f[idxF]<g[idxG]
Case 1就是我們想要的, count加1, f[ ]和g[ ]的idx都往後移
Case 2表示現在f[idxF]較大, 所以我們將g[ ]的idx往後移
Case 3表示現在g[idxG]較大, 所以我們將f[ ]的idx往後移
[SCv1]
//idxG is index of g
//idxF is index of f
while(idxG< lengthG && idxF< lengthF){
if(f[idxF]==g[idxG]){
sum++;
idxG++;
idxF++;
}
else if(f[idxF]>g[idxG]){
idxG++;
}
else{
idxF++;
}
}
沒有留言:
張貼留言