LeetCode高频面试60天打卡日记Day21

Day21(水壶问题–最大公约数)

在这里插入图片描述
若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。
* 裴蜀定理:
* 如果所需要的水量是两个水壶容量的最大公约数的倍数,且水量不大于两个水壶的容量之和,那么必然可以用这两个水壶操作得到所需要的水量。

class Solution {
    
    
    public boolean canMeasureWater(int x, int y, int z) {
    
    
        //解决x或者y中一个为0的情况
        if(x==0||y==0){
    
    
            if(z==x||z==y){
    
    
                return true;
            }
            return false;
        }
        if(x+y<z){
    
    
            return false;
        }
        int temp = gcd(x,y);
        return z%temp==0;
    }
    
    private int gcd(int x,int y){
    
    
        int big = x>y? x:y;
        int small = x<y? x:y;
        if(big%small==0){
    
    
            return small;
        }
        return gcd(big%small,small);
    }
}

猜你喜欢

转载自blog.csdn.net/YoungNUAA/article/details/105018740