牛牛和牛妹在一条水平公路上,牛牛距离公路的最左端距离为n,只有牛牛可以进行水平左右的移动,每次移动的距离为1,给定一个数值y,若牛妹可以出现在水平公路的任意一个地方,那么牛牛需要最少移动几次才可以使得:n – 牛牛与牛妹的距离 = y?

题解:根据题意进行模拟即可,假设公路的最左端为O,牛牛的位置记为N,牛妹的位置记为M,可得:∣∣ON∣−∣MN∣∣= y。
分情况进行讨论,若M在N的右侧,那么此时y>n,所以只需将牛牛移动到M点即可,结果为y-n;
若M在N的左侧,为了使牛牛移动的距离最少,所以将牛妹放置到ON的中点即可,因为移动的次数为整数,所以如果(n - y) % 2成立,则牛牛只需左移一次即可,反之,无需移动。

参考代码:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @param y int整型 
     * @return int整型
     */
    int solve(int n, int y)
    {
        if (n <= y)
        {
            return y - n;
        }
        else
        {
            if ((n - y) % 2)
            {
                return 1;
            }
            return 0;
        }
    }
};