Loading...

[LeetCode] 347. Top K Frequent elements (javascript)

/** * @param {number[]} nums * @param {number} k * @return {number[]} */ var topKFrequent = function(nums, k) { const map=new Map(); for(const num of nums){ if(!map.has(num)){ map.set(num,1) }else{ map.set(num,map.get(num)+1); } } const arr=[]; for(const [key,value] of map){ arr.push([key,value]); } arr.sort((a,b)=>b[1]-a[1]); const answer=[]; for(let i=0;i

[LeetCode]3. Longest Substring without repeating characters (javascript)

if(checked[s[i]]) 부분에서 위치가 0일때도 안나왔던 것처럼 인식해서 애먹었다; ㅠ undefined로 명시적으로 처리해줬다. Input: s = "abcabcbb" 뒤의 a가 등장하면 a의 위치는 3으로 바뀌고 문자열 시작위치는 이전 a의 뒤인 b(1)이 되어 가장 긴 문자열은 bca가 된다. ** 찾아보니 Map을 사용해서 풀면 코드를 더 간단히 할 수 있을 것 같다 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { const checked={}; let result=0; let start=0; for(let i=0;i

[LeetCode] 771. Jewels and Stones (javascript)

/** * @param {string} J * @param {string} S * @return {number} */ var numJewelsInStones = function(J, S) { const cnt={}; for(let i=0;i

[LeetCode] 739. Daily Temperatures (javascript)

현재 위치의 인덱스를 stack(배열)에 집어넣는다. 만약 현재의 온도가 stack에 들어있는 온도(혹은 온도들)보다 높다면 그만큼 빼서 위치의 차만큼 정답 배열을 갱신한다. /** * @param {number[]} T * @return {number[]} */ var dailyTemperatures = function(T) { const answer=Array(T.length).fill(0); const stack=[]; for(let i=0;i

[LeetCode] 316. Remove Duplicate letters (javascript)

먼저 각 문자의 총 등장 개수를 저장한다 stack에 b, c, a 가 들어오고 또 b, c가 들어올 때 (b, c, a ,b, c 예제) a가 들어오는 순간 stack에 이미 들어있던 b, c는 뒤에 또 등장하므로 (cnt>0) 이므로 나중에 다시 stack에 넣어주면 되므로 stack에서 없애고 a를 집어넣는다. 뒤에 다시 등장하는 b, c는 cnt==0이므로 또 뒤에 등장하는 b,c가 없어 더 이상 스택에서 제거할 수 없고 지금 사용한다고 보면 된다. /** * @param {string} s * @return {string} */ var removeDuplicateLetters = function(s) { const cnt={} // 각 문자가 등장하는 개수 저장하는 객체 for(let i=0;i..

[LeetCode] 121. Best time to buy and sell stock (javascript)

min은 반복문을 돌면서 가장 작은 값이 들어가게 한다. sum은 현재 위치에서 가장 작은 값 min과 현재 가격 price 차 중 가장 큰 값으로 계속 업데이트 해준다. /** * @param {number[]} prices * @return {number} */ var maxProfit = function(prices) { let min=prices[0]; let sum=0; prices.forEach(price=>{ if(priceprice-min?sum:price-min; }) return sum; };

[LeetCode] 5. Longest Palindromic Substring (javascript)

/** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { function expand(l,r){ //r==s.length까지 검사하는 이유는 substring에서 맨 끝 인덱스가 짤리기 때문이다 while(l>=0 && r

[LeetCode] 49. Group Anagrams (javascript)

각 문자열을 배열로 만들어 정렬한 다음 다시 문자열로 만듬 정렬된 문자열에 해당하는 기존 문자열들을 집어넣음 객체를 돌면서 answer배열에 각 배열들을 넣는다. 1. 객체이용 /** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function(strs) { ans=[] dic={} for(let i=0;i{ ans.push(arr) }) return ans }; 2. 객체 없이 배열로만 푸는 방법 /** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function(strs) { dic=[] strs.forEach(str=>{ w=str.sp..

[LeetCode] 125. valid palindrome (javascript)

leetcode.com/problems/valid-palindrome/submissions/ 1. 정규표현식 이용하지 않음. 대문자로 변환한 뒤 if문으로 문자와 숫자 검사 s=s.toUpperCase(); arr=[] for(let i=0;i='A' && s[i]='0'&& s[i]

leetCode - move zeros (python, javascript)

0 1 0 3 12 가 있을 때 앞에 0이 있으면 뒤의 값과 바꾸는 알고리즘을 사용했다 (삽입 정렬) 만약 이전 값이 0이 아닌 수가 있으면 앞에는 이미 0이 없는 상태이므로 다음 원소로 넘어가면 된다 class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ for i,e in enumerate(nums): for j in range(i-1,-1,-1): if nums[j]!=0: break nums[j]=nums[j+1] nums[j+1]=0 2) 비슷하지만 조금 다른 풀이 idx=0 (0의 위치라고 가정)로 둔다. 만약 0이 아닌 수가 ..