1894 - Find the Student that Will Replace the Chalk
JAVA
class Solution { public int chalkReplacer(int[] chalk, int k) { int n = chalk.length; long[] prefixSums = new long[n]; prefixSums[0] = chalk[0]; for (int i = 1; i < n; i++) prefixSums[i] = prefixSums[i - 1] + chalk[i]; long remainder = ((long) k) % prefixSums[n - 1]; for (int i = 0; i < n; i++) { if (prefixSums[i] > remainder) return i; } return -1; } } ############ class Solution { public int chalkReplacer(int[] chalk, int k) { int n = chalk.length; long[] s = new long[n + 1]; s[0] = chalk[0]; for (int i = 1; i < n; ++i) { s[i] = s[i - 1] + chalk[i]; } k %= s[n - 1]; int left = 0, right = n - 1; while (left < right) { int mid = (left + right) >> 1; if (s[mid] > k) { right = mid; } else { left = mid + 1; } } return left; } }
C++
class Solution {
public:
int chalkReplacer(vector<int>& A, int k) {
long sum = accumulate(begin(A), end(A), 0L), i = 0, N = A.size();
k %= sum;
while (k >= A[i]) {
k -= A[i];
++i;
}
return i;
}
};
Comments
Post a Comment