陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列**現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
#include#include#define true 1
#define false 0
bool ginvalid=false;
//判斷是否非法輸入
bool checkinvalid(int* numbers,int length)
return ginvalid;
}//判斷是否存在出現次數超過陣列長度的一半的數
bool checkmorethanhalf(int* numbers,int length,int number)
bool gmorethanhalf=true;
if(times*2<=length)
return gmorethanhalf;
}//查詢出現次數超過陣列長度的一半的數
void morethanhalf(int* numbers,int length)
//times出現次數
//result是數
int result=numbers[0];
int times=1;
int i=1;
for(i;ielse if(numbers[i]==result)
else
}//判斷出現次數是否超過一半
if(!checkmorethanhalf(numbers,length,result))
printf("%d\n",result);
}int main()
; morethanhalf(a,9);
return 0;
}
劍指offer 順時針列印矩陣
題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。分析 第一次看到這個題目的時候,覺得...
劍指offer 順時針列印矩陣
題目描述 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路 遞迴列印,處理好邊界就ok...
劍指offer 順時針列印矩陣
題目描述 給定乙個矩陣按照順時針順序從外到內的列印這個矩陣 解題思路 設定乙個全域性的方向向量dir其中的順序是向右,向下,向左,向上 每次給行加上乙個方向向量,當出現越界或者已經列印過的時候重新選擇方向 vectorprintmatrix vector matrix int d 0 int row...