#1 Two Sum
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const table = new Map()
let i = 0
for (const num of nums) {
const x = target - num
if (table.has(x)) {
return [table.get(x), i]
}
table.set(num, i++)
}
return []
};
JavaScript
복사
#20 Valid Parentheses
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const closeToOpen = {
')': '(',
'}': '{',
']': '['
}
const stack = []
for (const char of s) {
const openP = closeToOpen[char]
// char가 열린 괄호인 경우
if (!openP) {
stack.push(char)
continue
}
// 닫힌 괄호인 경우
if (stack.length > 0 && stack[stack.length - 1] === openP) {
stack.pop()
continue
}
return false
}
return stack.length === 0
};
JavaScript
복사
#21 Merge Two Sorted Lists
#26 Remove Duplicates from Sorted Array
in-place(two pointer 문제)
var removeDuplicates = function(nums) {
if (nums.length === 0) return 0; // 안전 처리
let k = 1; // 다음 유니크 값을 쓸 위치 (첫 값은 이미 확정)
for (let i = 1; i < nums.length; i++) {
if (nums[i] !== nums[i - 1]) { // 새 값 발견
nums[k] = nums[i]; // 앞쪽에 덮어쓰기
k++; // 쓰는 위치 한 칸 전진
}
}
return k; // 유니크 개수
};
JavaScript
복사
#121 Best Time to Buy and Sell Stock
var maxProfit = function(prices) {
let minSoFar = Infinity; // 최저가
let best = 0;
for (const price of prices) {
if (price < minSoFar) {
minSoFar = price; // 더 싼 날 발견 → 매수 후보 갱신
} else {
best = Math.max(best, price - minSoFar); // 오늘 팔면 이익? 최대치 갱신
}
}
return best;
};
JavaScript
복사
#125 Valid Palindrome
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
let sanitizedString = s.replace(/[^0-9a-zA-Z]/g, '') // remove non-alphabet
sanitizedString = sanitizedString.toLowerCase() // upper -> lower
const length = sanitizedString.length
if (length <= 1) return true
let left = 0, right = length - 1;
const isOdd = length % 2 === 1 // left, right 만났을 때 끝 // 짝수인 경우 legnth / 2의 경우에 다다랐을 때 끝
while((isOdd && left !== right) || (!isOdd && left < (length / 2))) {
if (sanitizedString[left] === sanitizedString[right]) {
left++, right--
continue
}
return false
}
return true
};
JavaScript
복사