题目描述
下课了,牛牛要去食堂吃饭,他们学校的食堂有很多个门,而且整个建筑物是圆形的。只不过要去吃饭的人很多,在里面吃饭的人也很多,所以大家都在门口外面排队等待吃饭。
所以牛牛采取了这样的一个策略:刚开始时,牛牛在第一个门口,如果这个门口有人在排队,那么他选择花费1分钟时间走到下一个门口,如果没有人的话,牛牛就可以直接进去吃饭啦。食堂的每一个门,每1分钟排队的人数都会减少一个。
现在给你门的数量n,和每个门外排队的人的数量,如果按照牛牛的策略,那么牛牛最终会在哪个门进去吃饭呢?请你进行编程求解,返回牛牛最终是从第几个门进入食堂吃饭的。

题目分析
起初拿到这个题目的时候我百思不得其解,后面看了大佬的代码也还是没能理解,于是干脆,我就手动模拟了一遍,把所有的情况都一一列举出来,返现这个代码原来是这个意思,题目要求我们求牛牛最后会去哪家饭店吃饭,来来回回,我们可以直接去算,把每个元素的值加上饭店的数目-1,然后减去当前位置,减一是因为当前是从0开始算的,然后求出来的值再去除以n,这样我们就能快速的判断哪个饭店的人数最先减为0.最少的肯定是最先减为0的

class Solution {
public:
    /**
     * 返回牛牛最终是从第几个门进入食堂吃饭的
     * @param n int整型 代表门的数量
     * @param a int整型vector 代表每个门外等待的人数
     * @return int整型
     */
    int solve(int n, vector<int>& a) {
        // write code here
        int mn=1e9;
        int ret=0;
        for(int i=0;i<n;i++){
            if(((a[i]+n-1-i)/n)<mn){
                mn=((a[i]+n-1-i)/n);
                ret=i;
            }
        }
        return ret+1;
    }
};