zoukankan      html  css  js  c++  java
  • LeetCode 365. 水壶问题

    365. 水壶问题

    难度中等

    有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?

    如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。

    你允许:

    • 装满任意一个水壶
    • 清空任意一个水壶
    • 从一个水壶向另外一个水壶倒水,直到装满或者倒空

    示例 1: (From the famous "Die Hard" example)

    输入: x = 3, y = 5, z = 4
    输出: True
    

    示例 2:

    输入: x = 2, y = 6, z = 5
    输出: False

    思路:根据题意,需判断壶的体积是否与z相等,(x+y)是否小于z,以及x和y是否等于0,满足以上条件,则返回对应的bool型,否则,求出x,y的最大公因数,即两壶可以组合出的最小单位,用z对其取余,如果余数为0,则恰好可以得到z升水,否则,不可以得到。

    int fun(int a,int b)
    {
        int c=1;
        while(c!=0){
            c=a%b;
            a=b;
            b=c;
        }
        return a;
    }
    
    bool canMeasureWater(int x, int y, int z){
        if(x==z||y==z){
            return true;
        }else if((x+y)<z){
            return false;
        }
        if(x==0&&y==0){
            return false;
        }
        if(z%fun(x,y)==0){
            return true;
        }else{
            return false;
        }
    
    }
  • 相关阅读:
    mongodb数组操作
    tmux使用心得
    redis设置key总结
    gitbook构建文档命令
    js中for in,of区别
    redis清除缓存和连接远程服务器
    Postman使用记录
    asp.net中导出Execl的方法
    CASE WHEN 用法
    js 字符串转换数字
  • 原文地址:https://www.cnblogs.com/woju/p/12542722.html
Copyright © 2011-2022 走看看