题目一
思路分析
二分查找法:
要查找目标数的算术平方根k,则K*k <=x,则可以利用二分法查找0-x之间的数,看是否与其匹配。
代码实现
class Solution {public int mySqrt(int x) {//使用二分查找int left=0,right=x,ans=-1;while(left<=right){//中间值int middle=left+(right-left)/2;//判断中间值的平方与目标值之间的关系if((long)middle*middle<=x){//将目标值赋值给整数部分ans=middle;//指针重置left=middle+1;}else{//指针重置right=middle-1;}}return ans;}
}
题目二
思路分析
动态规划问题
分两种情况:
先爬一步:在加上后面的n-1阶楼梯爬法
先爬两步:再加上后面n-2阶楼梯爬法
将两种情况相加,即得到爬楼梯的总方法数
代码实现
class Solution {public int climbStairs(int n) {//先定义动态数组int[] array=new int[n+1];//初始化数组的前两个阶梯array[0]=1;array[1]=1;//遍历,每增加一节楼梯,则到达该楼梯层有多少种方法for(int i=2;i<=n;i++){array[i]=array[i-1]+array[i-2];}//返回到达第n层,共有多少总方法return array[n];}
}