每日一题 两个水桶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。
你允许:
- 装满任意一个水壶
- 清空任意一个水壶
- 从一个水壶向另外一个水壶倒水,直到装满或者倒空
方法一 深度优先遍历
每次操作的选择有
把 X 壶的水灌进 Y 壶,直至灌满或倒空;
把 Y 壶的水灌进 X 壶,直至灌满或倒空;
把 X 壶灌满;
把 Y 壶灌满;
把 X 壶倒空;
把 Y 壶倒空。
因此,每一步就循环对不同的操作进行遍历,直到遍历完全部可能。速度比较慢。借助外部存储记录遍历过的状态,减少重复遍历。
方法二 贝祖定理
因为每次有效操作只会让桶里的水总量增加 x,增加 y,减少 x,或者减少 y。因此我们的目标可以改写成:找到一对整数 a, b,使得
ax+by=z
而只要满足 z≤x+y,且这样的 a, b存在,那么我们的目标就是可以达成的。
贝祖定理告诉我们,ax+by=z 有解当且仅当 z 是 x, y 的最大公约数的倍数。因此我们只需要找到 x, y 的最大公约数并判断 z 是否是它的倍数即可。
class Solution {public boolean canMeasureWater(int x, int y, int z) {if(z==0){return true;}if(x+y<z){return false;}if(x==0||y=0){return x+y==z; }int d=gcd(x,y);return z%d==0;}public int gcd(int a, int b){return b==0?a:gcd(b,a%b);}
}
每日一题 两个水桶问题相关推荐
- 力扣每日一题——两数相加II
发现做的题难度始终不高,今天Leecode给了一个稍微难一点的题目.(前两天没更是因为去拔牙了~~>_<~~) 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每 ...
- 寒假每日一题——两句话中的不常见单词
题目链接:https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/ 题目描述 句子 是一串由空格分隔的单词.每个 单词 仅 ...
- 4月你好,愚人节果然是笨人,【LeetCode每日一题】1006. 笨阶乘
4月你好,愚人节果然是笨人,[LeetCode每日一题]1006. 笨阶乘 今日题目1006题,每日一题微信交流群可以点击右下角:合作转载->联系我,拉你入群. 目前每日一题两个群,每天推送题目 ...
- 20200720:每日一题之两数之和Ⅱ(leetcode167)
每日一题之两数之和Ⅱ 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 今日份笑点如下: 暴力遍历,视为TLE 双指针左右移动,根据大小判断左指针右移还是右指针左移,清晰易懂,为正解. 代码实 ...
- 【每日一题】不创建第三个变量,实现两数的交换 (品茗笔试题)
[每日一题]不创建第三个变量,实现两数的交换(品茗笔试题) 题目: 不创建第三个变量,实现两数的交换. 交换两个数,我们最先会想到开辟第三个变量,再进行交换. //第三变量法 swap1(int* ...
- 【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第三天
专栏: 蓝桥杯--每日四道填空题(两道真题+两道模拟题) &离蓝桥杯已经不到一个月时间了,赶快刷起来吧,填空题一定别丢分!! ୧꒰•̀ᴗ•́꒱୨ 另一个专栏是: 蓝桥杯--编程题刷题营(每日四 ...
- LeetCode 每日一题 42. 接雨水 详细多种题解 C++描述
LeetCode 每日一题 42. 接雨水 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,一起加油吧~ 难度 困难 2020.04.04每日一题 ...
- Leetcode每日一题总目录(动态更新。。。)
0. 概要 leecode每日一题(也可能多题)题解跟踪记录及总目录. 常用算法解题思路和技巧及数据结构: 预处理:数组排序(954),哈希表... 双指针法 682,125,905 单向链表 2 双 ...
- 算法笔记——每日一题(完结)
算法笔记 From Now To My Death 前言 初级算法 1.两数之和 7.整数反转 9.回文数 14.最长公共前缀 27.移除元素[拷贝复制] 28.实现strStr()[双指针] 35. ...
最新文章
- D5RPG引擎的一些笔记
- linux学习笔记十四:安装SAMBA(Server Message Block)
- 文件数据分析制作过程【1】
- 安装vmware esx4.1
- stm32 输出PWM
- 模糊搜索时搜索结果中关键词变为不同颜色
- Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)
- jQuery EasyUI Datagrid组件的完整的基础DOM结构
- 「镁客·请讲」安智汽车郭健:ADAS是一个链条式的系统,每个模块都必须做好...
- DevExpress控件库----AlertControl提示控件
- 据说网易搜索引擎-超越GOOGLE
- EOS Platform 7.2 安装
- er图 navicat_navicat怎么生成er图
- Clojure学习02:语法
- _Linux学习手册(二)—文件目录类命令
- 在ie6下文字颜色不兼容的解决方法
- tensor.detach() 和 tensor.data 的区别
- Dart教程(二):基本语法
- python urlretrieve下载进度_python《文件下载进度显示》 urllib.request.urlretrieve(self.__path,self.__name,jindu)...
- 【数据处理】——利用Excel VBA批量将详细地址转换成省市区三级行政区划
热门文章
- 吴恩达 tensorflow2.0 实践系列课程(3):NLP
- 《1024 程序员节》—我喂自己袋盐
- sql查询某个部门及其所以子部门信息
- Source insight 4.0 显示右边文件
- Markdown插入图片标注及使用emjoy表情
- 分享一个转义emjoy表情的方法
- Microsoft Platform SDK Febrary 2003下载(更新VC6的SDK)
- IPhone8 升级变砖复活记
- 原生js日历选择器插件开发实例教程
- 10个明亮的圣诞照片滤镜LR预设模板 10 Bright Christmas Desktop Mobile presets