leetcode刷题-二分法

1.求开方

class Solution {
public:
    bool guess(long x, long y){
    return x*x<=y;
}
public:
    int mySqrt(int y) {
        long L=0,R=(long)y+1;//区间
        long ans=0;
        while(L

2.最大分割数组

 class Solution {
 public boolean guess(long mid,int[] nums,int m){
        long sum=0;
        long mm=0;
        for(int i=0;imid){
                ++mm;
                sum=nums[i];
                if(nums[i]>mid)
                {return false;}
            }else
            {sum+=nums[i];}
        }
        return mm

3.倍增法求幂

class Solution {
    public double myPow(double x, int n) {
        if(n==0)
        {return 1;}
        double A=myPow(x,n/2);
        if(n%2==0){
            return A*A;
        }else{
            double A=myPow(x,n/2);
            return A*A*x;   
        }
    }
}

 

你可能感兴趣的:(leetcode刷题-二分法)