有钱的字节跳动面试题就是这么枯燥无味!
原题:给你一个装满水的 8 升满壶和两个分别是 5 升、3 升的空壶,请想个优雅的办法,使得其中一个水壶恰好装 4 升水,每一步的操作只能是倒空或倒满。

理解了这个题目的意思之后,我们的第一个方法肯定就是使用强大的脑力来进行暴力破解法,瓶子里的水在我们的脑子里颠三倒四,但是脑子有可能没那么清晰,想了几步之后就开始出现记忆错乱,然后就不得不开始慢慢重播。 甚至到最后好不容易搞定了,但是怎么走过来的步骤又给忘记的一干二净 —— 智商好像受到了点小小的侮辱!
这道题其实有一道非常科学的解决方法 —— 广度遍历,我们将三个瓶子的状态标示为一个数。
8 0 0
然后开始拓展这个数的所有可能的状态,第一步这个数可以变为,括号里的数是上一步的数字
3 5 0(8 0 0) 、 5 0 3(8 0 0)
然后继续拓展第二步所有可能的状态,并且不得和之前的状态出现重复(这叫剪枝)
0 5 3(3 5 0)、3 2 3(3 5 0)、5 3 0(5 0 3)
继续第三步
6 2 0(3 2 3)、2 3 3(5 3 0)

这篇博客分享了字节跳动Android面试中的一道题目,即如何用8升、5升和3升的水壶得到4升水的优雅解法。通过广度遍历的思路,详细解析了解题过程,同时鼓励读者尝试用代码实现。文中还提及字节跳动的内推机会,强调学好Android技术的重要性。
最低0.47元/天 解锁文章

1309

被折叠的 条评论
为什么被折叠?



