64,172
社区成员




1.第371,两整数之和
第一个解:偷懒 :p
- int getSum(int a, int b){
- return a+b;
- }
第二个解 亦或补差(错的)
- int getSum(int a, int b){
- return (a^b)^((a&b)<<1);
- }
忘记当时是怎么想的了。看了一i下评论区大佬的说法很好理解而且和我的想法很接近;但我认为只会copy而不保证可以真正理解是学不好算法的,所以没去抄,只是看了很久
2,3同1
4:递归乘法
- int multiply(int A, int B){
- int c=0;
- while(B>0){
- c=A+c;
- B--;
- }
- return c;
- }
很简单的一题,用的是乘法的本来定义:让a加上 b 个自己,反之亦然
5.除法运算
一:萌新解法 :D
- int divide(int dividend, int divisor){
- if(divisor!=0){
- return (dividend/divisor);
- }
- else return 0;
- }
二:超慢超慢解法
- int divide(int dividend, int divisor){
- int a=dividend,b=divisor,i;
- if(a!=0){
- if((a*b)<0){
- if(a<0)
- a=!a+1;//负数算,倒置补1
- else{
- b=!b+1;
- }
- }
- for(i=0,a>0,i++){
- a-=b;
- }
- return i+1;
- }
- else return 0;
- }
易知该算法 。。收敛太慢
是想到用退位数(因为提示 2^31)这样除,但是范围太大了想不到怎么办了。。
6:次幂函数
- double myPow(double x, int n){
- int a=1;
- while(n>0){
- a*=x;
- n--;
- }
- return a;
- }
or :D
- double myPow(double x, int n){
- return pow(x,n);
- }
7平方根运算
- int mySqrt(int x){
- if(x<=0){
- return 0;
- }
- else
- return sqrt(x);
- }
8-比大小
- int maximum(int a, int b){
- return((a-b>=0)?a:b);
- }