- 设计思想:
-视频讲解链接B站视频讲解
- 复杂度分析:
- 代码:
c++版本:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回牛牛最终是从第几个门进入食堂吃饭的
* @param n int整型 代表门的数量
* @param a int整型vector 代表每个门外等待的人数
* @return int整型
*/
int nowcoderQueue(int n, vector<int>& a) {
// write code here
int res = 0;//进入食堂吃饭的门编号
//先进行一轮游
for(int i = 0;i < n;i ++){
a[i] -= i;
if(a[i] <= 0) return i + 1;//如果到达门口的时候排队人数为0直接返回门编号
}
//进行第二轮
int num = INT_MAX;
for(int i = 0;i < n;i ++){
int temp = a[i] / n;//至少需要几轮a
if(a[i] % n == 1) temp ++;//不能整除n还得+1轮
if(temp < num){
//更新值
num = temp;
res = i;
}
}
return res + 1;
}
};
Java版本:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回牛牛最终是从第几个门进入食堂吃饭的
* @param n int整型 代表门的数量
* @param a int整型一维数组 代表每个门外等待的人数
* @return int整型
*/
public int nowcoderQueue (int n, int[] a) {
// write code here
int res = 0;//进入食堂吃饭的门编号
//先进行一轮游
for(int i = 0;i < n;i ++){
a[i] -= i;
if(a[i] <= 0) return i + 1;//如果到达门口的时候排队人数为0直接返回门编号
}
//进行第二轮
int num = Integer.MAX_VALUE;
for(int i = 0;i < n;i ++){
int temp = a[i] / n;//至少需要几轮a
if(a[i] % n == 1) temp ++;//不能整除n还得+1轮
if(temp < num){
//更新值
num = temp;
res = i;
}
}
return res + 1;
}
}Python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 返回牛牛最终是从第几个门进入食堂吃饭的
# @param n int整型 代表门的数量
# @param a int整型一维数组 代表每个门外等待的人数
# @return int整型
#
class Solution:
def nowcoderQueue(self , n , a ):
# write code here
res = 0#进入食堂吃饭的门编号
#先进行一轮游
for i in range(0,n):
a[i] -= i;
if(a[i] <= 0): return i + 1#如果到达门口的时候排队人数为0直接返回门编号
#进行第二轮
num = 1000000000
for i in range(0,n):
temp = a[i] // n#至少需要几轮a
if(a[i] % n == 1): temp +=1 #不能整除n还得+1轮
if(temp < num):
#更新值
num = temp
res = i
return res + 1JavaScript版本:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回牛牛最终是从第几个门进入食堂吃饭的
* @param n int整型 代表门的数量
* @param a int整型一维数组 代表每个门外等待的人数
* @return int整型
*/
function nowcoderQueue( n , a ) {
// write code here
let res = 0;//进入食堂吃饭的门编号
//先进行一轮游
for(let i = 0;i < n;i ++){
a[i] -= i;
if(a[i] <= 0) return i + 1;//如果到达门口的时候排队人数为0直接返回门编号
}
//进行第二轮
let num = 1000000000;
for(let i = 0;i < n;i ++){
let temp = parseInt([i] / n);//至少需要几轮a
if(a[i] % n == 1) temp ++;//不能整除n还得+1轮
if(temp < num){
//更新值
num = temp;
res = i;
}
}
return res + 1;
}
module.exports = {
nowcoderQueue : nowcoderQueue
};
京公网安备 11010502036488号