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