其他分享
首页 > 其他分享> > LeetCode09--x的平方根和爬楼梯

LeetCode09--x的平方根和爬楼梯

作者:互联网

1.x的平方根

//实现 int sqrt(int x) 函数。 
//
// 计算并返回 x 的平方根,其中 x 是非负整数。 
//
// 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 
//
// 示例 1: 
//
// 输入: 4
//输出: 2
// 
//
// 示例 2: 
//
// 输入: 8
//输出: 2
//说明: 8 的平方根是 2.82842..., 
//     由于返回类型是整数,小数部分将被舍去。
// 
// Related Topics 数学 二分查找

x的平方根采用的是二分查找的方式,就是将原先的直接比较数组中的target和nums[i]换成了平方和数。

public int mySqrt(int x) {
        int l = 0, r = x, ans = -1;
        while (l <= r) {
            int mid = l + (r - l) / 2;
            if ((long) mid * mid <= x) {
                ans = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
        return ans;
    }

 2.爬楼梯

//假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 
//
// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 
//
// 注意:给定 n 是一个正整数。 
//
// 示例 1: 
//
// 输入: 2
//输出: 2
//解释: 有两种方法可以爬到楼顶。
//1.  1 阶 + 1 阶
//2.  2 阶 
//
// 示例 2: 
//
// 输入: 3
//输出: 3
//解释: 有三种方法可以爬到楼顶。
//1.  1 阶 + 1 阶 + 1 阶
//2.  1 阶 + 2 阶
//3.  2 阶 + 1 阶
// 
// Related Topics 动态规划

这一题主要是要发现规律,后面的和前面的是什么关系,第n阶台阶=第n-1阶台阶+1或者第n-2阶台阶+2,就这样算出了一个迭代的式子,f(n)=f(n-1)+f(n-2)

public int climbStairs(int n) {
        //通过规律我们可以防线,第n阶台阶可以看成是第n-1阶+1和第n-2阶+2,这两种
        //所以这是一个迭代式
        int r = 1, p=0, q=0;
        for (int i = 1; i <= n; i++) {
            p = q;
            q = r;
            r = p+q;
        }
        return r;
    }

 

标签:楼顶,爬楼梯,示例,--,int,台阶,平方根,LeetCode09
来源: https://blog.csdn.net/qq_40971025/article/details/112071948