this is good problem.
https://codefights.com/challenge/X33imTX2FSqhSLTtJ
My code is
int c, i,t;
int MaxCupCakes(int N, int[] P, int K) {
for (; i < P.length; i++ ) {
t= (P[i] -c -1);
if(K<=t) break;
K=K-t;
c=P[i];
}
return c+K<= N ?c+K : -1;
}
best code is here
int MaxCupCakes(int n, int[] P, int k) {
for(int i:P)
if(i<=k)k++;
return k>n ?-1 : k ;
}
Max and Caroline, two girls in their mid-twenties, work at a Brooklyn restaurant as waitresses. Together, they dream of starting up their cupcake business.
One day Max comes with a box of N
cupcakes numbered according to their quality from 1
to N
. Caroline has a list of cupcakes P
that should be removed from the box.
Your task it to find the quality of the Kth
cupcake after the cupcakes from the list P
are removed from the box.
If it is not possible to get the Kth
cupcake, return -1
instead.
Example
For N = 4
, P = [1]
and K = 2
, the output should be
MaxCupCakes(N, P, K) = 3
.
Initially there were cupcakes of the following quality:
1, 2, 3, 4
.
According to P
, the cupcake with quality 1
should be removed, so only the following cupcakes are left:
2, 3, 4
.
The 2nd
cupcake in this list is 3
, thus the output should be 3
as well.
[input] integer N
The number of cupcakes, 4 ≤ N ≤ 109
.
[input] array.integer P
A sorted array of positive integers, the cupcakes to be removed.
0 ≤ P.length ≤ 500
,
1 ≤ P[i] ≤ N
.
[input] integer K
A positive integer, the 1-based number of the cupcake to find.
[output] integer
The quality of the Kth
cupcake, or -1
if less than K
cupcakes are left.
No comments:
Post a Comment