365. 水壶问题

装满y ---- y还有5
y向x装3-----y还有2,x有3
倒掉x,把y里面的2装到x-------y还有0,x有2
装满y ----- y有5,x有2
y向x装1(用y装满x) ----- y有4,x有3
倒掉x ------ y有4,x有 0

没有z的容器

  • 数学上可以证明只要x,y的最大公约数能整除k,就存在一对m,n实现mx + ny = k。 因此问题就转化为寻找x,y的最大公约数是否能整除k。
    辗转相除法
    class Solution {
      public boolean canMeasureWater(int x, int y, int z) {
          if(x+y<z)return false;
          if(z==0)return true;
          if(x<y) {
              int temp = x;
              x= y;
              y = temp;
          }
          if(y==0)
              return x==z;
          while(x%y!=0) {
              int i=x%y;
              x=y;
              y=i;
          }
          return z%y==0;
      }
    }

其他解法没想出来

全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
coffrar:全都是已读😅沟通一千五百多个了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务