Skip to content

Commit b21e286

Browse files
committed
feat: add solutions to lc problem: No.1744
No.1744.Can You Eat Your Favorite Candy on Your Favorite Day
1 parent 201a40f commit b21e286

File tree

6 files changed

+187
-2
lines changed

6 files changed

+187
-2
lines changed

solution/1700-1799/1744.Can You Eat Your Favorite Candy on Your Favorite Day/README.md

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,89 @@
6565

6666
<!-- 这里可写通用的实现逻辑 -->
6767

68+
**方法一:前缀和**
69+
70+
时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 为数组 `candiesCount` 的长度。
71+
6872
<!-- tabs:start -->
6973

7074
### **Python3**
7175

7276
<!-- 这里可写当前语言的特殊实现逻辑 -->
7377

7478
```python
75-
79+
class Solution:
80+
def canEat(self, candiesCount: List[int], queries: List[List[int]]) -> List[bool]:
81+
s = list(accumulate(candiesCount, initial=0))
82+
ans = []
83+
for t, day, mx in queries:
84+
least, most = day, (day + 1) * mx
85+
ans.append(least < s[t + 1] and most > s[t])
86+
return ans
7687
```
7788

7889
### **Java**
7990

8091
<!-- 这里可写当前语言的特殊实现逻辑 -->
8192

8293
```java
94+
class Solution {
95+
public boolean[] canEat(int[] candiesCount, int[][] queries) {
96+
int n = candiesCount.length;
97+
long[] s = new long[n + 1];
98+
for (int i = 0; i < n; ++i) {
99+
s[i + 1] = s[i] + candiesCount[i];
100+
}
101+
int m = queries.length;
102+
boolean[] ans = new boolean[m];
103+
for (int i = 0; i < m; ++i) {
104+
int t = queries[i][0], day = queries[i][1], mx = queries[i][2];
105+
long least = day, most = (long) (day + 1) * mx;
106+
ans[i] = least < s[t + 1] && most > s[t];
107+
}
108+
return ans;
109+
}
110+
}
111+
```
112+
113+
### **C++**
114+
115+
```cpp
116+
using ll = long long;
117+
118+
class Solution {
119+
public:
120+
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
121+
int n = candiesCount.size();
122+
vector<ll> s(n + 1);
123+
for (int i = 0; i < n; ++i) s[i + 1] = s[i] + candiesCount[i];
124+
vector<bool> ans;
125+
for (auto& q : queries) {
126+
int t = q[0], day = q[1], mx = q[2];
127+
ll least = day, most = 1ll * (day + 1) * mx;
128+
ans.emplace_back(least < s[t + 1] && most > s[t]);
129+
}
130+
return ans;
131+
}
132+
};
133+
```
83134

135+
### **Go**
136+
137+
```go
138+
func canEat(candiesCount []int, queries [][]int) (ans []bool) {
139+
n := len(candiesCount)
140+
s := make([]int, n+1)
141+
for i, v := range candiesCount {
142+
s[i+1] = s[i] + v
143+
}
144+
for _, q := range queries {
145+
t, day, mx := q[0], q[1], q[2]
146+
least, most := day, (day+1)*mx
147+
ans = append(ans, least < s[t+1] && most > s[t])
148+
}
149+
return
150+
}
84151
```
85152

86153
### **...**

solution/1700-1799/1744.Can You Eat Your Favorite Candy on Your Favorite Day/README_EN.md

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,76 @@
5959
### **Python3**
6060

6161
```python
62-
62+
class Solution:
63+
def canEat(self, candiesCount: List[int], queries: List[List[int]]) -> List[bool]:
64+
s = list(accumulate(candiesCount, initial=0))
65+
ans = []
66+
for t, day, mx in queries:
67+
least, most = day, (day + 1) * mx
68+
ans.append(least < s[t + 1] and most > s[t])
69+
return ans
6370
```
6471

6572
### **Java**
6673

6774
```java
75+
class Solution {
76+
public boolean[] canEat(int[] candiesCount, int[][] queries) {
77+
int n = candiesCount.length;
78+
long[] s = new long[n + 1];
79+
for (int i = 0; i < n; ++i) {
80+
s[i + 1] = s[i] + candiesCount[i];
81+
}
82+
int m = queries.length;
83+
boolean[] ans = new boolean[m];
84+
for (int i = 0; i < m; ++i) {
85+
int t = queries[i][0], day = queries[i][1], mx = queries[i][2];
86+
long least = day, most = (long) (day + 1) * mx;
87+
ans[i] = least < s[t + 1] && most > s[t];
88+
}
89+
return ans;
90+
}
91+
}
92+
```
93+
94+
### **C++**
95+
96+
```cpp
97+
using ll = long long;
98+
99+
class Solution {
100+
public:
101+
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
102+
int n = candiesCount.size();
103+
vector<ll> s(n + 1);
104+
for (int i = 0; i < n; ++i) s[i + 1] = s[i] + candiesCount[i];
105+
vector<bool> ans;
106+
for (auto& q : queries) {
107+
int t = q[0], day = q[1], mx = q[2];
108+
ll least = day, most = 1ll * (day + 1) * mx;
109+
ans.emplace_back(least < s[t + 1] && most > s[t]);
110+
}
111+
return ans;
112+
}
113+
};
114+
```
68115

116+
### **Go**
117+
118+
```go
119+
func canEat(candiesCount []int, queries [][]int) (ans []bool) {
120+
n := len(candiesCount)
121+
s := make([]int, n+1)
122+
for i, v := range candiesCount {
123+
s[i+1] = s[i] + v
124+
}
125+
for _, q := range queries {
126+
t, day, mx := q[0], q[1], q[2]
127+
least, most := day, (day+1)*mx
128+
ans = append(ans, least < s[t+1] && most > s[t])
129+
}
130+
return
131+
}
69132
```
70133

71134
### **...**
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using ll = long long;
2+
3+
class Solution {
4+
public:
5+
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
6+
int n = candiesCount.size();
7+
vector<ll> s(n + 1);
8+
for (int i = 0; i < n; ++i) s[i + 1] = s[i] + candiesCount[i];
9+
vector<bool> ans;
10+
for (auto& q : queries) {
11+
int t = q[0], day = q[1], mx = q[2];
12+
ll least = day, most = 1ll * (day + 1) * mx;
13+
ans.emplace_back(least < s[t + 1] && most > s[t]);
14+
}
15+
return ans;
16+
}
17+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
func canEat(candiesCount []int, queries [][]int) (ans []bool) {
2+
n := len(candiesCount)
3+
s := make([]int, n+1)
4+
for i, v := range candiesCount {
5+
s[i+1] = s[i] + v
6+
}
7+
for _, q := range queries {
8+
t, day, mx := q[0], q[1], q[2]
9+
least, most := day, (day+1)*mx
10+
ans = append(ans, least < s[t+1] && most > s[t])
11+
}
12+
return
13+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public boolean[] canEat(int[] candiesCount, int[][] queries) {
3+
int n = candiesCount.length;
4+
long[] s = new long[n + 1];
5+
for (int i = 0; i < n; ++i) {
6+
s[i + 1] = s[i] + candiesCount[i];
7+
}
8+
int m = queries.length;
9+
boolean[] ans = new boolean[m];
10+
for (int i = 0; i < m; ++i) {
11+
int t = queries[i][0], day = queries[i][1], mx = queries[i][2];
12+
long least = day, most = (long) (day + 1) * mx;
13+
ans[i] = least < s[t + 1] && most > s[t];
14+
}
15+
return ans;
16+
}
17+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def canEat(self, candiesCount: List[int], queries: List[List[int]]) -> List[bool]:
3+
s = list(accumulate(candiesCount, initial=0))
4+
ans = []
5+
for t, day, mx in queries:
6+
least, most = day, (day + 1) * mx
7+
ans.append(least < s[t + 1] and most > s[t])
8+
return ans

0 commit comments

Comments
 (0)