九日集训第一天(函数)


一、前言

由于以前参加过集训,所以今天写的很快,继续水题~~

二、题目

1)371. 两整数之和

1.a)代码:

class Solution {
    public int getSum(int a, int b) {
        return a+b;
    }
} 

2)面试题 17.01. 不用加号的加法

2.a)代码:

class Solution {
    public int add(int a, int b) {
        return a+b;
    }
}

3)剑指 Offer 65. 不用加减乘除做加法

3.a)代码:

class Solution {
    public int add(int a, int b) {
        return a+b;
    }
}

ps:三题都被水了…

4)面试题 08.05. 递归乘法

4.a)代码:

class Solution {
    public int multiply(int a, int b) {
        return a*b;
    }
}

5)29. 两数相除

5.a)代码:

class Solution {
    public int divide(int dividend, int divisor) {
        if(dividend==-2147483648 && divisor==-1 )
            return 2147483647;
        else
        return dividend/divisor;
    }
}

ps:这题需要考虑除法的结果会溢出,溢出的情况是 d i v i d e n d = = − 2147483648 和 d i v i s o r = = − 1 dividend== -2147483648 和 divisor==-1 dividend==2147483648divisor==1 。 不能忽略!!!!

6)50. Pow(x, n)

6.a)代码:

class Solution {
    public double myPow(double x, int n) {
        long N = n;
        return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
    }

    public double quickMul(double x, long N) {
        if (N == 0) {
            return 1.0;
        }
        double y = quickMul(x, N / 2);
        return N % 2 == 0 ? y * y : y * y * x;
    }
}

7)69. x 的平方根

7.a)代码:

int mySqrt(int x){
    return (int)sqrt(x);
}

8)面试题 16.07. 最大数值

8.a)代码:

class Solution {
    public int maximum(int a, int b) {
        long c = a;
        long d = b;
        int res = (int) ((Math.abs(c-d) + c + d)/2);
        return res;
    }
}

9)2119. 反转两次的数字

9.a)分析:

对于任何一个正整数,无论反转几次都不会出现前几位的数字为零,所以只有当原数字的最后含有 0 0 0时,才会出现反转后的数字与原数字不同;由此可得非负整数进行两次反转操作不变的充要条件即为:该整数为 0 0 0 或该整数结尾不含 0 0 0。而后者等价于该数 %10 的余数不为 0 0 0。我们按照该条件判断并相应返回结果即可。

9.b)代码:

class Solution {
    public boolean isSameAfterReversals(int num) {
         return num == 0 || num % 10 != 0;
    }
}

三、做题记录:

请添加图片描述

四、今日总结:

今天的题目相对比较简单,但还是要注意细节的考虑,对于变量的取值范围要考虑清楚,不能粗心!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枏念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值