Skip to content

Commit d8aecca

Browse files
authored
feat: add typescript solution to lc problem: No.1590 (doocs#637)
No.1590.Make Sum Divisible by P
1 parent 03d9dea commit d8aecca

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed

solution/1500-1599/1590.Make Sum Divisible by P/README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,38 @@
8181

8282
```
8383

84+
### **TypeScript**
85+
86+
```ts
87+
function minSubarray(nums: number[], p: number): number {
88+
const n = nums.length;
89+
let mod = 0;
90+
for (let i = 0; i < n; i++) {
91+
mod = (nums[i] + mod) % p;
92+
}
93+
if (!mod) return 0;
94+
95+
let hashMap = new Map<number, number>();
96+
hashMap.set(0, -1);
97+
let ans = n;
98+
let subMod = 0;
99+
for (let i = 0; i < n; i++) {
100+
let cur = nums[i];
101+
subMod = (subMod + cur) % p;
102+
let target = (subMod - mod + p) % p;
103+
if (hashMap.has(target)) {
104+
let j = hashMap.get(target);
105+
ans = Math.min(i - j, ans);
106+
if (ans == 1 && ans != n) {
107+
return ans;
108+
}
109+
}
110+
hashMap.set(subMod, i);
111+
}
112+
return ans == n ? -1 : ans;
113+
};
114+
```
115+
84116
### **...**
85117

86118
```

solution/1500-1599/1590.Make Sum Divisible by P/README_EN.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,38 @@
124124

125125
```
126126

127+
### **TypeScript**
128+
129+
```ts
130+
function minSubarray(nums: number[], p: number): number {
131+
const n = nums.length;
132+
let mod = 0;
133+
for (let i = 0; i < n; i++) {
134+
mod = (nums[i] + mod) % p;
135+
}
136+
if (!mod) return 0;
137+
138+
let hashMap = new Map<number, number>();
139+
hashMap.set(0, -1);
140+
let ans = n;
141+
let subMod = 0;
142+
for (let i = 0; i < n; i++) {
143+
let cur = nums[i];
144+
subMod = (subMod + cur) % p;
145+
let target = (subMod - mod + p) % p;
146+
if (hashMap.has(target)) {
147+
let j = hashMap.get(target);
148+
ans = Math.min(i - j, ans);
149+
if (ans == 1 && ans != n) {
150+
return ans;
151+
}
152+
}
153+
hashMap.set(subMod, i);
154+
}
155+
return ans == n ? -1 : ans;
156+
};
157+
```
158+
127159
### **...**
128160

129161
```
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
function minSubarray(nums: number[], p: number): number {
2+
const n = nums.length;
3+
let mod = 0;
4+
for (let i = 0; i < n; i++) {
5+
mod = (nums[i] + mod) % p;
6+
}
7+
if (!mod) return 0;
8+
9+
let hashMap = new Map<number, number>();
10+
hashMap.set(0, -1);
11+
let ans = n;
12+
let subMod = 0;
13+
for (let i = 0; i < n; i++) {
14+
let cur = nums[i];
15+
subMod = (subMod + cur) % p;
16+
let target = (subMod - mod + p) % p;
17+
if (hashMap.has(target)) {
18+
let j = hashMap.get(target);
19+
ans = Math.min(i - j, ans);
20+
if (ans == 1 && ans != n) {
21+
return ans;
22+
}
23+
}
24+
hashMap.set(subMod, i);
25+
}
26+
return ans == n ? -1 : ans;
27+
};

0 commit comments

Comments
 (0)