力扣365-水壶问题

水壶问题

题目链接

解题思路

  1. 假设两个水壶分别为A,B,容量为a,b;想要凑出C升的水
  2. 将A,B两壶看作一个整体
  3. 那么,这个整体只存在四种操作+a,-a,+b,-b;
  4. +a:就是将A壶装满
  5. -a:就是将A壶清空
  6. +b:就是将B壶装满
  7. -b:就是将B壶清空
  8. 想要凑出C升的水壶,需要满足xa+yb=c
  9. 即我们需要对A壶进行x次操作,对B壶进行y次操作,使得可以凑出C升的水
  10. 要想使得xa+yb=c成立,由裴蜀定理知道,要使的a和b的最大公约数可以整除c
c++ 复制代码
class Solution {
public:

    int gcd(int a,int b){
        return b ? gcd(b,a % b) : a;
    }
    bool canMeasureWater(int a, int b, int c) {
        if(c > a + b) return false;
        return !c || c % gcd(a,b) == 0;
    }
};
相关推荐
GEEK零零七32 分钟前
Leetcode 1472. 设计浏览器历史记录
算法·leetcode
鱼跃鹰飞42 分钟前
大厂面试真题-说一下Mybatis的缓存
java·后端·缓存·面试·职场和发展·mybatis
啵一杯1 小时前
leetcode1801. 积压订单中的订单总数
数据结构·算法
pranaa1 小时前
数据结构:树的定义及其性质
数据结构·数据库·算法
The丶Closer1 小时前
10. 排序
java·数据结构·算法·排序算法
liuyang-neu2 小时前
力扣 简单 104.二叉树的最大深度
java·数据结构·算法·leetcode
simple_ssn2 小时前
【C语言刷力扣】2079.给植物浇水
c语言·算法·leetcode
是小恐龙啊2 小时前
单链表的增删改查(数据结构)
c语言·开发语言·数据结构·算法
什码情况2 小时前
报数游戏 - 华为OD统一考试(E卷)
java·python·算法·游戏·华为od·笔试·华为od机试
WenGyyyL3 小时前
准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介
开发语言·c++·算法·蓝桥杯·acm