Skip to content

Commit ea80520

Browse files
committed
[leet] 다양
1 parent d15d88a commit ea80520

6 files changed

Lines changed: 148 additions & 0 deletions

File tree

허현빈/8주차/3Sum.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*/
5+
var threeSum = function (nums) {
6+
const arr = nums.sort((a, b) => a - b);
7+
const ans = [];
8+
const set = new Set();
9+
const findT = (t, idx) => {
10+
let start = 0;
11+
let end = nums.length - 1;
12+
if (start === idx) start++;
13+
if (end === idx) end--;
14+
while (start < end) {
15+
if (arr[start] + arr[end] === t) {
16+
const temp = [arr[idx], arr[start], arr[end]].sort((a, b) => a - b);
17+
if (!set.has(temp.join(""))) {
18+
ans.push(temp);
19+
set.add(temp.join(""));
20+
}
21+
start++;
22+
} else if (arr[start] + arr[end] < t) {
23+
start++;
24+
} else if (arr[start] + arr[end] > t) {
25+
end--;
26+
}
27+
if (start === idx) start++;
28+
if (end === idx) end--;
29+
}
30+
};
31+
32+
for (let i = 0; i < nums.length; i++) {
33+
if (arr[i] === arr[i - 1]) continue;
34+
findT(arr[i] * -1, i);
35+
}
36+
return ans;
37+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[]} height
3+
* @return {number}
4+
*/
5+
var maxArea = function (h) {
6+
let start = 0;
7+
let end = h.length - 1;
8+
let ans = 0;
9+
while (start < end) {
10+
ans = Math.max(ans, (end - start) * Math.min(h[end], h[start]));
11+
if (h[start] > h[end]) {
12+
end--;
13+
} else {
14+
start++;
15+
}
16+
}
17+
return ans;
18+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*/
6+
var isIsomorphic = function (s, t) {
7+
const map = new Map();
8+
const set = new Set();
9+
if (s.length !== t.length) return false;
10+
for (let i = 0; i < s.length; i++) {
11+
if (!map.has(s[i])) {
12+
if (set.has(t[i])) {
13+
return false;
14+
}
15+
map.set(s[i], t[i]);
16+
set.add(t[i]);
17+
} else {
18+
if (map.get(s[i]) !== t[i]) {
19+
return false;
20+
}
21+
}
22+
}
23+
return true;
24+
};

허현빈/8주차/Ransom Note.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {string} ransomNote
3+
* @param {string} magazine
4+
* @return {boolean}
5+
*/
6+
var canConstruct = function (ransomNote, magazine) {
7+
const map = new Map();
8+
for (let i = 0; i < magazine.length; i++) {
9+
const ch = magazine[i];
10+
if (!map.has(ch)) {
11+
map.set(ch, 1);
12+
} else {
13+
map.set(ch, map.get(ch) + 1);
14+
}
15+
}
16+
for (let i = 0; i < ransomNote.length; i++) {
17+
const ch = ransomNote[i];
18+
if (map.has(ch) && map.get(ch) >= 1) {
19+
map.set(ch, map.get(ch) - 1);
20+
} else {
21+
return false;
22+
}
23+
}
24+
return true;
25+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number[]} numbers
3+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
var twoSum = function (numbers, target) {
7+
let start = 0;
8+
let end = numbers.length - 1;
9+
let flag = false;
10+
while (start < end) {
11+
if (numbers[start] + numbers[end] > target) {
12+
end--;
13+
} else if (numbers[start] + numbers[end] < target) {
14+
start++;
15+
} else {
16+
flag = true;
17+
break;
18+
}
19+
}
20+
return [start + 1, end + 1];
21+
};

허현빈/8주차/Word Pattern.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {string} pattern
3+
* @param {string} s
4+
* @return {boolean}
5+
*/
6+
var wordPattern = function (pattern, s) {
7+
const arr = s.split(" ");
8+
const set = new Set();
9+
const map = new Map();
10+
if (arr.length !== pattern.length) return false;
11+
for (let i = 0; i < arr.length; i++) {
12+
if (map.has(arr[i])) {
13+
if (map.get(arr[i]) !== pattern[i]) return false;
14+
} else {
15+
if (set.has(pattern[i])) {
16+
return false;
17+
}
18+
map.set(arr[i], pattern[i]);
19+
set.add(pattern[i]);
20+
}
21+
}
22+
return true;
23+
};

0 commit comments

Comments
 (0)