2013年1月27日 星期日

[Q1-3]EQ_COUNT

[SOURCE]
名題精選百則_題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++;
      }
    }


沒有留言:

張貼留言