Can You Eat Your Favorite Candy on Your Favorite Day?
Solution
Java Code
class Solution {
public boolean[] canEat(int[] candiesCount, int[][] queries) {
long[] candiesPrefixCount = new long[candiesCount.length];
candiesPrefixCount[0] = candiesCount[0];
for(int i = 1; i < candiesCount.length; i++) {
candiesPrefixCount[i] = candiesPrefixCount[i - 1] + candiesCount[i];
}
boolean[] answer = new boolean[queries.length];
for(int i = 0; i < queries.length; i++) {
int[] query = queries[i];
int favCandy = query[0];
long favDay = query[1];
long dailyCap = query[2];
long totalCandiesToBeEatenBefore = (favCandy == 0) ? 0 : candiesPrefixCount[favCandy - 1];
if(totalCandiesToBeEatenBefore >= (favDay + 1) * dailyCap) {
answer[i] = false;
} else if((favDay + 1) > candiesPrefixCount[favCandy]) {
answer[i] = false;
} else {
answer[i] = true;
}
}
return answer;
}
}
C++ Code
class Solution {
public:
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
int n = candiesCount.size();
vector<long> candiesPrefixCount(n);
candiesPrefixCount[0] = candiesCount[0];
for (int i = 1; i < n; i++) {
candiesPrefixCount[i] = candiesPrefixCount[i - 1] + candiesCount[i];
}
vector<bool> answer;
for (const auto& query : queries) {
int favCandy = query[0];
long favDay = query[1];
long dailyCap = query[2];
long totalCandiesToBeEatenBefore = (favCandy == 0) ? 0 : candiesPrefixCount[favCandy - 1];
if (totalCandiesToBeEatenBefore >= (favDay + 1) * dailyCap) {
answer.push_back(false);
} else if ((favDay + 1) > candiesPrefixCount[favCandy]) {
answer.push_back(false);
} else {
answer.push_back(true);
}
}
return answer;
}
};
Python Code
class Solution:
def canEat(self, candiesCount: List[int], queries: List[List[int]]) -> List[bool]:
n = len(candiesCount)
candiesPrefixCount = [0] * n
candiesPrefixCount[0] = candiesCount[0]
for i in range(1, n):
candiesPrefixCount[i] = candiesPrefixCount[i - 1] + candiesCount[i]
answer = []
for query in queries:
favCandy, favDay, dailyCap = query
totalCandiesToBeEatenBefore = 0 if favCandy == 0 else candiesPrefixCount[favCandy - 1]
if totalCandiesToBeEatenBefore >= (favDay + 1) * dailyCap:
answer.append(False)
elif (favDay + 1) > candiesPrefixCount[favCandy]:
answer.append(False)
else:
answer.append(True)
return answer
Complexity Analysis
Time Complexity: O(N + Q), where N is the length of the given array candiesCount
and Q is the number of queries queries
.
Space Complexity: O(N), for building candiesPrefixCount
array. We will not consider answer
array in the space complexity as this is required in the output.