Skip to content

Commit b9fe632

Browse files
committed
feat: add solutions to lc problems
1 parent bfaf051 commit b9fe632

File tree

12 files changed

+159
-2
lines changed

12 files changed

+159
-2
lines changed

solution/2200-2299/2214.Minimum Health to Beat Game/README.md

+15-1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@
6868

6969
<!-- 这里可写通用的实现逻辑 -->
7070

71+
**方法一:贪心**
72+
73+
我们可以贪心地选择在伤害值最大的回合中使用一次护甲技能,假设伤害值最大为 $mx$,那么我们可以免受 $min(mx, armor)$ 的伤害,因此我们需要的最小生命值为 $sum(damage) - min(mx, armor) + 1$。
74+
75+
时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为数组 `damage` 的长度。
76+
7177
<!-- tabs:start -->
7278

7379
### **Python3**
@@ -146,7 +152,15 @@ func min(a, b int) int {
146152
### **TypeScript**
147153

148154
```ts
149-
155+
function minimumHealth(damage: number[], armor: number): number {
156+
let s = 0;
157+
let mx = 0;
158+
for (const v of damage) {
159+
mx = Math.max(mx, v);
160+
s += v;
161+
}
162+
return s - Math.min(mx, armor) + 1;
163+
}
150164
```
151165

152166
### **...**

solution/2200-2299/2214.Minimum Health to Beat Game/README_EN.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,15 @@ func min(a, b int) int {
137137
### **TypeScript**
138138

139139
```ts
140-
140+
function minimumHealth(damage: number[], armor: number): number {
141+
let s = 0;
142+
let mx = 0;
143+
for (const v of damage) {
144+
mx = Math.max(mx, v);
145+
s += v;
146+
}
147+
return s - Math.min(mx, armor) + 1;
148+
}
141149
```
142150

143151
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function minimumHealth(damage: number[], armor: number): number {
2+
let s = 0;
3+
let mx = 0;
4+
for (const v of damage) {
5+
mx = Math.max(mx, v);
6+
s += v;
7+
}
8+
return s - Math.min(mx, armor) + 1;
9+
}

solution/2500-2599/2549.Count Distinct Numbers on Board/README.md

+8
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ func distinctIntegers(n int) int {
111111
}
112112
```
113113

114+
### **TypeScript**
115+
116+
```ts
117+
function distinctIntegers(n: number): number {
118+
return Math.max(1, n - 1);
119+
}
120+
```
121+
114122
### **...**
115123

116124
```

solution/2500-2599/2549.Count Distinct Numbers on Board/README_EN.md

+8
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,14 @@ func distinctIntegers(n int) int {
9393
}
9494
```
9595

96+
### **TypeScript**
97+
98+
```ts
99+
function distinctIntegers(n: number): number {
100+
return Math.max(1, n - 1);
101+
}
102+
```
103+
96104
### **...**
97105

98106
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function distinctIntegers(n: number): number {
2+
return Math.max(1, n - 1);
3+
}

solution/2500-2599/2550.Count Collisions of Monkeys on a Polygon/README.md

+21
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,27 @@ func qmi(a, k, p int) int {
145145
}
146146
```
147147

148+
### **TypeScript**
149+
150+
```ts
151+
function monkeyMove(n: number): number {
152+
const mod = BigInt(10 ** 9 + 7);
153+
return Number((qmi(2n, n, mod) - 2n + mod) % mod);
154+
}
155+
156+
function qmi(a: bigint, k: number, p: bigint): bigint {
157+
let res = 1n;
158+
while (k) {
159+
if ((k & 1) === 1) {
160+
res = (res * a) % p;
161+
}
162+
k >>= 1;
163+
a = (a * a) % p;
164+
}
165+
return res;
166+
}
167+
```
168+
148169
### **...**
149170

150171
```

solution/2500-2599/2550.Count Collisions of Monkeys on a Polygon/README_EN.md

+21
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,27 @@ func qmi(a, k, p int) int {
128128
}
129129
```
130130

131+
### **TypeScript**
132+
133+
```ts
134+
function monkeyMove(n: number): number {
135+
const mod = BigInt(10 ** 9 + 7);
136+
return Number((qmi(2n, n, mod) - 2n + mod) % mod);
137+
}
138+
139+
function qmi(a: bigint, k: number, p: bigint): bigint {
140+
let res = 1n;
141+
while (k) {
142+
if ((k & 1) === 1) {
143+
res = (res * a) % p;
144+
}
145+
k >>= 1;
146+
a = (a * a) % p;
147+
}
148+
return res;
149+
}
150+
```
151+
131152
### **...**
132153

133154
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function monkeyMove(n: number): number {
2+
const mod = BigInt(10 ** 9 + 7);
3+
return Number((qmi(2n, n, mod) - 2n + mod) % mod);
4+
}
5+
6+
function qmi(a: bigint, k: number, p: bigint): bigint {
7+
let res = 1n;
8+
while (k) {
9+
if ((k & 1) === 1) {
10+
res = (res * a) % p;
11+
}
12+
k >>= 1;
13+
a = (a * a) % p;
14+
}
15+
return res;
16+
}

solution/2500-2599/2551.Put Marbles in Bags/README.md

+18
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,24 @@ func putMarbles(weights []int, k int) (ans int64) {
136136
}
137137
```
138138

139+
### **TypeScript**
140+
141+
```ts
142+
function putMarbles(weights: number[], k: number): number {
143+
const n = weights.length;
144+
const arr: number[] = [];
145+
for (let i = 0; i < n - 1; ++i) {
146+
arr.push(weights[i] + weights[i + 1]);
147+
}
148+
arr.sort((a, b) => a - b);
149+
let ans = 0;
150+
for (let i = 0; i < k - 1; ++i) {
151+
ans += arr[n - i - 2] - arr[i];
152+
}
153+
return ans;
154+
}
155+
```
156+
139157
### **...**
140158

141159
```

solution/2500-2599/2551.Put Marbles in Bags/README_EN.md

+18
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,24 @@ func putMarbles(weights []int, k int) (ans int64) {
120120
}
121121
```
122122

123+
### **TypeScript**
124+
125+
```ts
126+
function putMarbles(weights: number[], k: number): number {
127+
const n = weights.length;
128+
const arr: number[] = [];
129+
for (let i = 0; i < n - 1; ++i) {
130+
arr.push(weights[i] + weights[i + 1]);
131+
}
132+
arr.sort((a, b) => a - b);
133+
let ans = 0;
134+
for (let i = 0; i < k - 1; ++i) {
135+
ans += arr[n - i - 2] - arr[i];
136+
}
137+
return ans;
138+
}
139+
```
140+
123141
### **...**
124142

125143
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function putMarbles(weights: number[], k: number): number {
2+
const n = weights.length;
3+
const arr: number[] = [];
4+
for (let i = 0; i < n - 1; ++i) {
5+
arr.push(weights[i] + weights[i + 1]);
6+
}
7+
arr.sort((a, b) => a - b);
8+
let ans = 0;
9+
for (let i = 0; i < k - 1; ++i) {
10+
ans += arr[n - i - 2] - arr[i];
11+
}
12+
return ans;
13+
}

0 commit comments

Comments
 (0)