学习笔记【雪国列车】-第二日 函数

星星-adcbiss1234 2021-11-30 23:23:22
加精

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);
}

 

...全文
147 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-数据结构与算法 发布问题, 以便更快地解决您的疑问

64,077

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧