Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 540339b

Browse files
committed
feat: 数组交集II
1 parent 26e8daa commit 540339b

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

两个数组的交集II-350.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @param {number[]} nums1
3+
* @param {number[]} nums2
4+
* @return {number[]}
5+
*/
6+
let intersect = function (nums1, nums2) {
7+
let map1 = makeCountMap(nums1)
8+
let map2 = makeCountMap(nums2)
9+
let res = []
10+
for (let num of map1.keys()) {
11+
const count1 = map1.get(num)
12+
const count2 = map2.get(num)
13+
14+
if (count2) {
15+
const pushCount = Math.min(count1, count2)
16+
for (let i = 0; i < pushCount; i++) {
17+
res.push(num)
18+
}
19+
}
20+
}
21+
return res
22+
}
23+
24+
function makeCountMap(nums) {
25+
let map = new Map()
26+
for (let i = 0; i < nums.length; i++) {
27+
let num = nums[i]
28+
let count = map.get(num)
29+
if (count) {
30+
map.set(num, count + 1)
31+
} else {
32+
map.set(num, 1)
33+
}
34+
}
35+
return map
36+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {number} s
3+
* @param {number[]} nums
4+
* @return {number}
5+
*/
6+
let minSubArrayLen = function (s, nums) {
7+
let n = nums.length
8+
// 定义[i,...j]滑动窗口 取这个窗口里的和
9+
let i = 0
10+
let j = -1
11+
12+
let sum = 0
13+
let res = Infinity
14+
15+
while (i < n) {
16+
if (sum < s) {
17+
sum += nums[++j]
18+
} else {
19+
sum -= nums[i]
20+
i++
21+
}
22+
23+
if (sum >= s) {
24+
res = Math.min(res, j - i + 1)
25+
}
26+
}
27+
return res === Infinity ? 0 : res
28+
}
29+
30+
console.log(minSubArrayLen(7, [2, 3, 1, 2, 4, 3]))

0 commit comments

Comments
 (0)