66.加一
//此方法是用for循环从后往前遍历,令数组的最后一位加一,并%10,一种情况如果该数小于10则返回本值,另一种情况则是数组最后一位加一为10,此时%10的结果则为0,就不满足继续循环(因为不满足这个判断的原因为该数为10)每次循环后就往前遍历然后加一(这里加一是因为前面%10得到0该往前进一位),当循环结束没有触发判断条件是因为出现都为9的数组,则需要进行扩容再把数组第一个索引的值为1,最后返回数组
class Solution {
public int[] plusOne(int[] digits) {
for(int i=digits.length-1;i>=0;i--){
digits[i]++;
digits[i]=digits[i]%10;
if(digits[i]!=0){
return digits;
}
}
digits=new int[digits.length+1];
digits[0]=1;
return digits;
}
}
69x的平方根
//此题可以用二分来求解,由于·求得的x的平方根是在0~x内所以只要找到的某个平方根的平方等于或者刚好小于x(如果平方大于x不满足条件,因为小数部分被割舍了)
//然后再用二分法取0~x中间值,直到满足条件,具体情况看代码
class Solution {
public int mySqrt(int x) {
int r=x,l=0;
while(l<=r){
int mid=l+(r-l)/2;
if((long)mid*mid<=x){
l=mid+1;
}else{
r=mid-1;
}
}
return l-1;
}
}