poj1002的思路

自己的思路

1)將字符串中的字母轉換成數字,即將字符串轉成數字字符串O(n)

2)對數字字符串進行排序,可用快速排序,達到O(nlgn)的級別

3)在已經排好序的數字字符串中找出有重複的並輸出,若沒有重複的則輸出"No duplicates"。複雜度O(n)

 

 

//下面是對第3步的一個模擬,輸入的數字和題目的要求並非一致,但思路是這樣。

//並且是O(n)級別

main()

{
 int a[14]={2,2,55,55,55,90,90,104,104,104,104,234,234,235};
 int i=0;
 int b[14][2]={0};//記錄有重複的數字,並且記錄它重複的次數
 int count=1;
 int s=0;//判斷是否有重複的標誌
 for(;i<14;i++)
 {
  if(a[i+1]==a[i])++count;
  else
  {
   if(count>1)
   {
    b[i][0]=a[i];//記錄有重複的數字
    b[i][1]=count;//記錄它重複的次數
   // cout<<a[i]<<" is "<<count<<endl;
   }
  count=1;
  }
 
 }
 for(i=0;i<14;i++)
 {
  if((s+=b[i][1])<=1)continue;
  else
  {
   if(b[i][1]>1)
   cout<<b[i][0]<<" is "<<b[i][1]<<endl;
  }
 }
 if(s==0)cout<<"No duplicates!"<<endl;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章