标签:style class blog c code java
出题:给定一个数字序列,其中每个数字最多出现两次,只有一个数字仅出现了一次,如何快速找出其中仅出现了一次的数字;
分析:
解题:
1 int findSingleInt(int *array, int length) { 2 int result=0; 3 for(int i=0;i<length;i++) 4 result^=array[i]; 5 return result; 6 } 7 8 int main() { 9 int array[]={1,2,3,4,5,1,2,3,4,5,6}; 10 printf("%d\n",findSingleInt(array,11)); 11 return 0; 12 }
出题:求两个正整数的最大公约数,如果正整数较大,该如何处理;
分析:
解题:
1 int gcd1(int x, int y) { 2 return (y==0) ? x:gcd1(y,x%y); 3 } 4 5 int gcd2(int x, int y) { 6 if(x<y) 7 return gcd2(y,x); 8 if(y==0) 9 return x; 10 else 11 return gcd2(x-y,y); 12 } 13 14 int gcd3(int x, int y) { 15 if(x<y) 16 return gcd3(y,x); 17 if(y==0) 18 return x; 19 else { 20 if(x%2==0) { 21 if(y%2==0) 22 return (gcd3(x >> 1, y >> 1) << 1); 23 else 24 return gcd3(x >> 1,y); 25 } else { 26 if(y%2==0) 27 return gcd3(x,y >> 1); 28 else 29 return gcd3(y,x-y); 30 } 31 } 32 }
笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题,布布扣,bubuko.com
笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题
标签:style class blog c code java
原文地址:http://www.cnblogs.com/leo-chen-2014/p/3751173.html