Skip to content

Commit b9c1e04

Browse files
committed
✅ [1679] n log n
1 parent fd88d1d commit b9c1e04

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

1679/my_solution.js

+23-18
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,40 @@
44
* @return {number}
55
*/
66
var maxOperations = function (nums, k) {
7-
let complimentMap = new Map(), operationCount = 0
7+
let l = 0, r = nums.length - 1, operationCount = 0, visited = new Set();
88

9-
for (let i = 0; i < nums.length; i++) {
10-
let compliment = k - nums[i]
11-
// map.set(nums[i], { comp: k - nums[i], count: (map.get(nums[i]) ?? 0) + 1 })
12-
complimentMap.set(compliment, (complimentMap.get(compliment) ?? 0) + 1)
13-
}
9+
console.log(nums)
10+
console.log(nums.sort((a, b) => a - b))
11+
// [1, 1, 1, 2, 2, 2, 3, 4]
12+
nums = nums.sort((a, b) => a - b);
13+
while (l < r) {
14+
console.log(`l: ${l}, r: ${r}`)
15+
console.log(`nums[l]: ${nums[l]}, nums[r]: ${nums[r]}`)
1416

15-
// console.log(map)
16-
// console.log(map.get(1).count)
17+
if ((nums[l] + nums[r]) > k) {
18+
r--;
19+
console.log("~> this is > k")
20+
continue;
21+
}
1722

18-
for (let i = 0; i < nums.length; i++) {
19-
if (complimentMap.has(nums[i]) && complimentMap.get(nums[i]) > 0) {
20-
console.log(nums[i])
21-
console.log(complimentMap)
22-
complimentMap.set(nums[i], complimentMap.get(nums[i]) - 1);
23-
complimentMap.set(k - nums[i], complimentMap.get(k - nums[i]) - 1);
23+
if ((nums[l] + nums[r]) === k) {
2424
operationCount++;
25+
r--;
26+
l++;
27+
} else {
28+
l++;
2529
}
2630
}
27-
console.log("final")
28-
console.log(complimentMap)
2931

3032
return operationCount;
3133
};
3234

3335
let x =
34-
// maxOperations([1, 2, 3, 4], 5)
35-
maxOperations([3, 1, 3, 4, 3], 6)
36+
// maxOperations([1, 2, 3, 4], 5) // 2
37+
// maxOperations([3, 1, 3, 4, 3], 6) // 1
38+
// maxOperations([4, 4, 1, 3, 1, 3, 2, 2, 5, 5, 1, 5, 2, 1, 2, 3, 5, 4], 2) // 2
39+
// maxOperations([2, 2, 2, 3, 1, 1, 4, 1], 4) // 2
40+
maxOperations([63, 10, 28, 31, 90, 53, 75, 77, 72, 47, 45, 6, 49, 13, 77, 61, 68, 43, 33, 1, 14, 62, 55, 55, 38, 54, 8, 79, 89, 14, 50, 68, 85, 12, 42, 57, 4, 67, 75, 6, 71, 8, 61, 26, 11, 20, 22, 3, 70, 52, 82, 70, 67, 18, 66, 79, 84, 51, 78, 23, 19, 84, 46, 61, 63, 73, 80, 61, 15, 12, 58, 3, 21, 66, 42, 55, 7, 58, 85, 60, 23, 69, 41, 61, 35, 64, 58, 84, 61, 77, 45, 14, 1, 38, 4, 8, 42, 16, 79, 60, 80, 39, 67, 10, 24, 15, 6, 37, 68, 76, 30, 53, 63, 87, 11, 71, 86, 82, 77, 76, 37, 21, 85, 7, 75, 83, 80, 8, 19, 25, 11, 10, 41, 66, 70, 14, 23, 74, 33, 76, 35, 89, 68, 85, 83, 57, 6, 72, 34, 21, 57, 72, 79, 29, 65, 3, 67, 8, 24, 24, 18, 26, 27, 68, 78, 64, 57, 55, 68, 28, 9, 11, 38, 45, 61, 37, 81, 89, 38, 43, 45, 26, 84, 62, 22, 37, 51, 15, 30, 67, 75, 24, 66, 40, 81, 74, 48, 43, 78, 14, 33, 19, 73, 5, 1, 2, 53, 29, 49, 73, 23, 5], 59) // 42
3641

3742
console.log("Result")
3843
console.log(x)

1679/solution.js

+10-11
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@
44
* @return {number}
55
*/
66
var maxOperations = function (nums, k) {
7-
let complimentMap = new Map(), operationCount = 0
7+
let l = 0, r = nums.length - 1, operationCount = 0
88

9-
for (let i = 0; i < nums.length; i++) {
10-
let compliment = k - nums[i]
11-
complimentMap.set(compliment, (complimentMap.get(compliment) ?? 0) + 1)
12-
}
13-
14-
for (let i = 0; i < nums.length; i++) {
15-
if (complimentMap.has(nums[i]) && complimentMap.get(nums[i]) > 0) {
16-
complimentMap.set(nums[i], complimentMap.get(nums[i]) - 1);
17-
complimentMap.set(k - nums[i], complimentMap.get(k - nums[i]) - 1);
9+
nums = nums.sort((a, b) => a - b);
10+
while (l < r) {
11+
if ((nums[l] + nums[r]) === k) {
1812
operationCount++;
13+
r--;
14+
l++;
15+
} else if ((nums[l] + nums[r]) > k) {
16+
r--;
17+
} else {
18+
l++;
1919
}
2020
}
2121

2222
return operationCount;
23-
2423
};

0 commit comments

Comments
 (0)