【说明】

该面试题主要考察面试者的思维逻辑,在解答该题的过程中是否可以发现其规律,并完成编码。

【解题思路】

1、先将小杯子接满水;

1、将小杯子的水往大杯子里倒;

2、当大杯子里的水满后,将大杯子的水倒出,然后继续将水从小杯子里面倒一直重复,只到小杯子里的水是四升时再停止。

【流程示意图】

阿里面试题:两个杯子倒水问题?一个杯子7升,一个杯子5升,怎样才能精确倒出四升的水,需要几次?_System

【倒水结果图(红色表示给小杯子接水)】

阿里面试题:两个杯子倒水问题?一个杯子7升,一个杯子5升,怎样才能精确倒出四升的水,需要几次?_System_02

从上图可以发小规律,其实就是一直观察小杯子里剩余的水量,用编程思想来说就是一只对小杯子里的水进行取余,当余数为4时就求出了需要多少次。还有一个规律就是每次的余数其实就是等于

(小杯子水接水的次数)%大杯子的水=(5*i)%7

【代码演示】

public class Demo1 {

    public static void main(String[] args) {
        int cup1 = 7;//7升的杯子
        int cup2 = 5;//5升的杯子
        int target = 4;//目标剩余水量
        int count = 0;
        while (true) {
            count++;
            int result = (cup2 * count) % cup1;
            if (result == target) {
                System.out.println("倒水第"+count+"次的时候,5升杯子里的水是"+target);
                return;
            }
        }
    }
}