Skip to content

Commit de7edd5

Browse files
committed
feat: add solutions to lc problem: No.2028
No.2028.Find Missing Observations
1 parent 2092032 commit de7edd5

File tree

4 files changed

+209
-0
lines changed

4 files changed

+209
-0
lines changed

solution/2000-2099/2028.Find Missing Observations/README.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,79 @@
8282

8383
```
8484

85+
### **TypeScript**
86+
87+
```ts
88+
function missingRolls(rolls: number[], mean: number, n: number): number[] {
89+
const len = rolls.length + n;
90+
const sum = rolls.reduce((p, v) => p + v);
91+
const max = n * 6;
92+
const min = n;
93+
if ((sum + max) / len < mean || (sum + min) / len > mean) {
94+
return [];
95+
}
96+
97+
const res = new Array(n);
98+
for (let i = min; i <= max; i++) {
99+
if ((sum + i) / len === mean) {
100+
const num = Math.floor(i / n);
101+
res.fill(num);
102+
let count = i - n * num;
103+
let j = 0;
104+
while (count != 0) {
105+
if (res[j] === 6) {
106+
j++;
107+
} else {
108+
res[j]++;
109+
count--;
110+
}
111+
}
112+
break;
113+
}
114+
}
115+
return res;
116+
}
117+
```
118+
119+
### **Rust**
120+
121+
```rust
122+
impl Solution {
123+
pub fn missing_rolls(rolls: Vec<i32>, mean: i32, n: i32) -> Vec<i32> {
124+
let n = n as usize;
125+
let mean = mean as usize;
126+
let len = rolls.len() + n;
127+
let sum: i32 = rolls.iter().sum();
128+
let sum = sum as usize;
129+
let max = n * 6;
130+
let min = n;
131+
if (sum + max) < mean * len || (sum + min) > mean * len {
132+
return vec![];
133+
}
134+
135+
let mut res = vec![0; n];
136+
for i in min..=max {
137+
if (sum + i) / len == mean {
138+
let num = i / n;
139+
res.fill(num as i32);
140+
let mut count = i - n * num;
141+
let mut j = 0;
142+
while count != 0 {
143+
if res[j] == 6 {
144+
j += 1;
145+
} else {
146+
res[j] += 1;
147+
count -= 1;
148+
}
149+
}
150+
break;
151+
}
152+
}
153+
res
154+
}
155+
}
156+
```
157+
85158
### **...**
86159

87160
```

solution/2000-2099/2028.Find Missing Observations/README_EN.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,79 @@
6464

6565
```
6666

67+
### **TypeScript**
68+
69+
```ts
70+
function missingRolls(rolls: number[], mean: number, n: number): number[] {
71+
const len = rolls.length + n;
72+
const sum = rolls.reduce((p, v) => p + v);
73+
const max = n * 6;
74+
const min = n;
75+
if ((sum + max) / len < mean || (sum + min) / len > mean) {
76+
return [];
77+
}
78+
79+
const res = new Array(n);
80+
for (let i = min; i <= max; i++) {
81+
if ((sum + i) / len === mean) {
82+
const num = Math.floor(i / n);
83+
res.fill(num);
84+
let count = i - n * num;
85+
let j = 0;
86+
while (count != 0) {
87+
if (res[j] === 6) {
88+
j++;
89+
} else {
90+
res[j]++;
91+
count--;
92+
}
93+
}
94+
break;
95+
}
96+
}
97+
return res;
98+
}
99+
```
100+
101+
### **Rust**
102+
103+
```rust
104+
impl Solution {
105+
pub fn missing_rolls(rolls: Vec<i32>, mean: i32, n: i32) -> Vec<i32> {
106+
let n = n as usize;
107+
let mean = mean as usize;
108+
let len = rolls.len() + n;
109+
let sum: i32 = rolls.iter().sum();
110+
let sum = sum as usize;
111+
let max = n * 6;
112+
let min = n;
113+
if (sum + max) < mean * len || (sum + min) > mean * len {
114+
return vec![];
115+
}
116+
117+
let mut res = vec![0; n];
118+
for i in min..=max {
119+
if (sum + i) / len == mean {
120+
let num = i / n;
121+
res.fill(num as i32);
122+
let mut count = i - n * num;
123+
let mut j = 0;
124+
while count != 0 {
125+
if res[j] == 6 {
126+
j += 1;
127+
} else {
128+
res[j] += 1;
129+
count -= 1;
130+
}
131+
}
132+
break;
133+
}
134+
}
135+
res
136+
}
137+
}
138+
```
139+
67140
### **...**
68141

69142
```
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
impl Solution {
2+
pub fn missing_rolls(rolls: Vec<i32>, mean: i32, n: i32) -> Vec<i32> {
3+
let n = n as usize;
4+
let mean = mean as usize;
5+
let len = rolls.len() + n;
6+
let sum: i32 = rolls.iter().sum();
7+
let sum = sum as usize;
8+
let max = n * 6;
9+
let min = n;
10+
if (sum + max) < mean * len || (sum + min) > mean * len {
11+
return vec![];
12+
}
13+
14+
let mut res = vec![0; n];
15+
for i in min..=max {
16+
if (sum + i) / len == mean {
17+
let num = i / n;
18+
res.fill(num as i32);
19+
let mut count = i - n * num;
20+
let mut j = 0;
21+
while count != 0 {
22+
if res[j] == 6 {
23+
j += 1;
24+
} else {
25+
res[j] += 1;
26+
count -= 1;
27+
}
28+
}
29+
break;
30+
}
31+
}
32+
res
33+
}
34+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function missingRolls(rolls: number[], mean: number, n: number): number[] {
2+
const len = rolls.length + n;
3+
const sum = rolls.reduce((p, v) => p + v);
4+
const max = n * 6;
5+
const min = n;
6+
if ((sum + max) / len < mean || (sum + min) / len > mean) {
7+
return [];
8+
}
9+
10+
const res = new Array(n);
11+
for (let i = min; i <= max; i++) {
12+
if ((sum + i) / len === mean) {
13+
const num = Math.floor(i / n);
14+
res.fill(num);
15+
let count = i - n * num;
16+
let j = 0;
17+
while (count != 0) {
18+
if (res[j] === 6) {
19+
j++;
20+
} else {
21+
res[j]++;
22+
count--;
23+
}
24+
}
25+
break;
26+
}
27+
}
28+
return res;
29+
}

0 commit comments

Comments
 (0)