Skip to content

Commit b35833e

Browse files
committed
feat: add solutions to lc problems: No.2383,2384
- No.2383.Minimum Hours of Training to Win a Competition - No.2384.Largest Palindromic Number
1 parent d33ab5f commit b35833e

File tree

8 files changed

+334
-6
lines changed

8 files changed

+334
-6
lines changed

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/README.md

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,12 @@ func minNumberOfHours(initialEnergy int, initialExperience int, energy []int, ex
171171
### **TypeScript**
172172

173173
```ts
174-
function minNumberOfHours(initialEnergy: number, initialExperience: number, energy: number[], experience: number[]): number {
174+
function minNumberOfHours(
175+
initialEnergy: number,
176+
initialExperience: number,
177+
energy: number[],
178+
experience: number[],
179+
): number {
175180
const n = energy.length;
176181
let ans = 0;
177182
for (let i = 0; i < n; i++) {
@@ -191,7 +196,83 @@ function minNumberOfHours(initialEnergy: number, initialExperience: number, ener
191196
initialExperience += minExperience;
192197
}
193198
return ans;
194-
};
199+
}
200+
```
201+
202+
```ts
203+
function minNumberOfHours(
204+
initialEnergy: number,
205+
initialExperience: number,
206+
energy: number[],
207+
experience: number[],
208+
): number {
209+
let res = 0;
210+
for (const v of experience) {
211+
if (initialExperience <= v) {
212+
res += v - initialExperience + 1;
213+
initialExperience = v + 1;
214+
}
215+
initialExperience += v;
216+
}
217+
for (const v of energy) {
218+
if (initialEnergy <= v) {
219+
res += v - initialEnergy + 1;
220+
initialEnergy = v + 1;
221+
}
222+
initialEnergy -= v;
223+
}
224+
return res;
225+
}
226+
```
227+
228+
### **C**
229+
230+
```c
231+
int minNumberOfHours(int initialEnergy, int initialExperience, int* energy, int energySize, int* experience, int experienceSize) {
232+
int res = 0;
233+
for (int i = 0; i < energySize; i++) {
234+
if (initialEnergy <= energy[i]) {
235+
res += energy[i] - initialEnergy + 1;
236+
initialEnergy = energy[i] + 1;
237+
}
238+
if (initialExperience <= experience[i]) {
239+
res += experience[i] - initialExperience + 1;
240+
initialExperience = experience[i] + 1;
241+
}
242+
initialEnergy -= energy[i];
243+
initialExperience += experience[i];
244+
}
245+
return res;
246+
}
247+
```
248+
249+
### **Rust**
250+
251+
```rust
252+
impl Solution {
253+
pub fn min_number_of_hours(
254+
mut initial_energy: i32,
255+
mut initial_experience: i32,
256+
energy: Vec<i32>,
257+
experience: Vec<i32>,
258+
) -> i32 {
259+
let n = energy.len();
260+
let mut res = 0;
261+
for i in 0..n {
262+
if initial_energy <= energy[i] {
263+
res += energy[i] - initial_energy + 1;
264+
initial_energy = energy[i] + 1;
265+
}
266+
if initial_experience <= experience[i] {
267+
res += experience[i] - initial_experience + 1;
268+
initial_experience = experience[i] + 1;
269+
}
270+
initial_energy -= energy[i];
271+
initial_experience += experience[i];
272+
}
273+
res
274+
}
275+
}
195276
```
196277

197278
### **...**

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/README_EN.md

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,12 @@ func minNumberOfHours(initialEnergy int, initialExperience int, energy []int, ex
155155
### **TypeScript**
156156

157157
```ts
158-
function minNumberOfHours(initialEnergy: number, initialExperience: number, energy: number[], experience: number[]): number {
158+
function minNumberOfHours(
159+
initialEnergy: number,
160+
initialExperience: number,
161+
energy: number[],
162+
experience: number[],
163+
): number {
159164
const n = energy.length;
160165
let ans = 0;
161166
for (let i = 0; i < n; i++) {
@@ -175,7 +180,83 @@ function minNumberOfHours(initialEnergy: number, initialExperience: number, ener
175180
initialExperience += minExperience;
176181
}
177182
return ans;
178-
};
183+
}
184+
```
185+
186+
```ts
187+
function minNumberOfHours(
188+
initialEnergy: number,
189+
initialExperience: number,
190+
energy: number[],
191+
experience: number[],
192+
): number {
193+
let res = 0;
194+
for (const v of experience) {
195+
if (initialExperience <= v) {
196+
res += v - initialExperience + 1;
197+
initialExperience = v + 1;
198+
}
199+
initialExperience += v;
200+
}
201+
for (const v of energy) {
202+
if (initialEnergy <= v) {
203+
res += v - initialEnergy + 1;
204+
initialEnergy = v + 1;
205+
}
206+
initialEnergy -= v;
207+
}
208+
return res;
209+
}
210+
```
211+
212+
### **C**
213+
214+
```c
215+
int minNumberOfHours(int initialEnergy, int initialExperience, int* energy, int energySize, int* experience, int experienceSize) {
216+
int res = 0;
217+
for (int i = 0; i < energySize; i++) {
218+
if (initialEnergy <= energy[i]) {
219+
res += energy[i] - initialEnergy + 1;
220+
initialEnergy = energy[i] + 1;
221+
}
222+
if (initialExperience <= experience[i]) {
223+
res += experience[i] - initialExperience + 1;
224+
initialExperience = experience[i] + 1;
225+
}
226+
initialEnergy -= energy[i];
227+
initialExperience += experience[i];
228+
}
229+
return res;
230+
}
231+
```
232+
233+
### **Rust**
234+
235+
```rust
236+
impl Solution {
237+
pub fn min_number_of_hours(
238+
mut initial_energy: i32,
239+
mut initial_experience: i32,
240+
energy: Vec<i32>,
241+
experience: Vec<i32>,
242+
) -> i32 {
243+
let n = energy.len();
244+
let mut res = 0;
245+
for i in 0..n {
246+
if initial_energy <= energy[i] {
247+
res += energy[i] - initial_energy + 1;
248+
initial_energy = energy[i] + 1;
249+
}
250+
if initial_experience <= experience[i] {
251+
res += experience[i] - initial_experience + 1;
252+
initial_experience = experience[i] + 1;
253+
}
254+
initial_energy -= energy[i];
255+
initial_experience += experience[i];
256+
}
257+
res
258+
}
259+
}
179260
```
180261

181262
### **...**
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
int minNumberOfHours(int initialEnergy, int initialExperience, int* energy, int energySize, int* experience, int experienceSize) {
2+
int res = 0;
3+
for (int i = 0; i < energySize; i++) {
4+
if (initialEnergy <= energy[i]) {
5+
res += energy[i] - initialEnergy + 1;
6+
initialEnergy = energy[i] + 1;
7+
}
8+
if (initialExperience <= experience[i]) {
9+
res += experience[i] - initialExperience + 1;
10+
initialExperience = experience[i] + 1;
11+
}
12+
initialEnergy -= energy[i];
13+
initialExperience += experience[i];
14+
}
15+
return res;
16+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
impl Solution {
2+
pub fn min_number_of_hours(
3+
mut initial_energy: i32,
4+
mut initial_experience: i32,
5+
energy: Vec<i32>,
6+
experience: Vec<i32>,
7+
) -> i32 {
8+
let n = energy.len();
9+
let mut res = 0;
10+
for i in 0..n {
11+
if initial_energy <= energy[i] {
12+
res += energy[i] - initial_energy + 1;
13+
initial_energy = energy[i] + 1;
14+
}
15+
if initial_experience <= experience[i] {
16+
res += experience[i] - initial_experience + 1;
17+
initial_experience = experience[i] + 1;
18+
}
19+
initial_energy -= energy[i];
20+
initial_experience += experience[i];
21+
}
22+
res
23+
}
24+
}

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
function minNumberOfHours(initialEnergy: number, initialExperience: number, energy: number[], experience: number[]): number {
1+
function minNumberOfHours(
2+
initialEnergy: number,
3+
initialExperience: number,
4+
energy: number[],
5+
experience: number[],
6+
): number {
27
const n = energy.length;
38
let ans = 0;
49
for (let i = 0; i < n; i++) {
@@ -18,4 +23,4 @@ function minNumberOfHours(initialEnergy: number, initialExperience: number, ener
1823
initialExperience += minExperience;
1924
}
2025
return ans;
21-
};
26+
}

solution/2300-2399/2384.Largest Palindromic Number/README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,47 @@ func largestPalindromic(num string) string {
196196
### **TypeScript**
197197

198198
```ts
199+
function largestPalindromic(num: string): string {
200+
const count = new Array(10).fill(0);
201+
for (const c of num) {
202+
count[c]++;
203+
}
204+
while (count.reduce((r, v) => (v % 2 === 1 ? r + 1 : r), 0) > 1) {
205+
for (let i = 0; i < 10; i++) {
206+
if (count[i] % 2 === 1) {
207+
count[i]--;
208+
break;
209+
}
210+
}
211+
}
199212

213+
let res = [];
214+
let oddIndex = -1;
215+
for (let i = 9; i >= 0; i--) {
216+
if (count[i] % 2 == 1) {
217+
oddIndex = i;
218+
count[i] -= 1;
219+
}
220+
res.push(...new Array(count[i] >> 1).fill(i));
221+
}
222+
if (oddIndex !== -1) {
223+
res.push(oddIndex);
224+
}
225+
const n = res.length;
226+
for (let i = 0; i < n; i++) {
227+
if (res[i] !== 0) {
228+
res = res.slice(i);
229+
if (oddIndex !== -1) {
230+
res.push(...[...res.slice(0, res.length - 1)].reverse());
231+
} else {
232+
res.push(...[...res].reverse());
233+
}
234+
return res.join('');
235+
}
236+
}
237+
238+
return '0';
239+
}
200240
```
201241

202242
### **...**

solution/2300-2399/2384.Largest Palindromic Number/README_EN.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,47 @@ func largestPalindromic(num string) string {
174174
### **TypeScript**
175175

176176
```ts
177+
function largestPalindromic(num: string): string {
178+
const count = new Array(10).fill(0);
179+
for (const c of num) {
180+
count[c]++;
181+
}
182+
while (count.reduce((r, v) => (v % 2 === 1 ? r + 1 : r), 0) > 1) {
183+
for (let i = 0; i < 10; i++) {
184+
if (count[i] % 2 === 1) {
185+
count[i]--;
186+
break;
187+
}
188+
}
189+
}
177190

191+
let res = [];
192+
let oddIndex = -1;
193+
for (let i = 9; i >= 0; i--) {
194+
if (count[i] % 2 == 1) {
195+
oddIndex = i;
196+
count[i] -= 1;
197+
}
198+
res.push(...new Array(count[i] >> 1).fill(i));
199+
}
200+
if (oddIndex !== -1) {
201+
res.push(oddIndex);
202+
}
203+
const n = res.length;
204+
for (let i = 0; i < n; i++) {
205+
if (res[i] !== 0) {
206+
res = res.slice(i);
207+
if (oddIndex !== -1) {
208+
res.push(...[...res.slice(0, res.length - 1)].reverse());
209+
} else {
210+
res.push(...[...res].reverse());
211+
}
212+
return res.join('');
213+
}
214+
}
215+
216+
return '0';
217+
}
178218
```
179219

180220
### **...**
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
function largestPalindromic(num: string): string {
2+
const count = new Array(10).fill(0);
3+
for (const c of num) {
4+
count[c]++;
5+
}
6+
while (count.reduce((r, v) => (v % 2 === 1 ? r + 1 : r), 0) > 1) {
7+
for (let i = 0; i < 10; i++) {
8+
if (count[i] % 2 === 1) {
9+
count[i]--;
10+
break;
11+
}
12+
}
13+
}
14+
15+
let res = [];
16+
let oddIndex = -1;
17+
for (let i = 9; i >= 0; i--) {
18+
if (count[i] % 2 == 1) {
19+
oddIndex = i;
20+
count[i] -= 1;
21+
}
22+
res.push(...new Array(count[i] >> 1).fill(i));
23+
}
24+
if (oddIndex !== -1) {
25+
res.push(oddIndex);
26+
}
27+
const n = res.length;
28+
for (let i = 0; i < n; i++) {
29+
if (res[i] !== 0) {
30+
res = res.slice(i);
31+
if (oddIndex !== -1) {
32+
res.push(...[...res.slice(0, res.length - 1)].reverse());
33+
} else {
34+
res.push(...[...res].reverse());
35+
}
36+
return res.join('');
37+
}
38+
}
39+
40+
return '0';
41+
}

0 commit comments

Comments
 (0)