목록leetcode (7)
코딩쌀롱

문제 Leetcode Sort Colors 문제 - input: 숫자 0, 1, 2로 이뤄진 배열 - output: void, - 주의: 카피하지 않고 nums 배열을 in-place로 swap해서 sort 풀이 런타임: 71ms / 86.69% (주로 70ms대로 나옴) 메모리: 38MB / 98.00% var sortColors = function(nums) { let zeroP = 0; let twoP = nums.length - 1; for(let i = 0; i < nums.length; i++) { if(twoP < i) break; else if(nums[i] === 0) { nums[i] = nums[zeroP] nums[zeroP] = 0; zeroP++; if(zeroP-1 === i)..

문제 Leetcode Find Pivot Index 문제 - input: 정수 배열 nums - output: pivot index의 왼쪽의 모든 값의 합과 오른쪽의 모든 값의 합이 같을 때의 pivot index, 없으면 -1 풀이 80ms / 98.33% var pivotIndex = function(nums) { let total = nums.reduce((a,b) => a+b) let leftSum = 0; for(let i = 0; i < nums.length; i++) { const rightSum = total - leftSum - nums[i]; if(leftSum === rightSum) return i; leftSum += nums[i]; } return -1; }; pivot 인덱스 ..

알고리즘을 다시 처음부터 시작해보려고 한다. 코드스쿼드가 끝났으니 이제 모두 내가 알아서 해야한다! 처음부터 매일매일 쌓아가보자👊🏼 문제 Leetcode Move Zeroes 문제 - input: 정수 배열 nums - output: 0이 아닌 정수는 순서 그대로, 0만 오른쪽으로 이동한 배열 - 주의! 배열 복사하지 말고 in-place로 풀이 76ms / 93.54% var moveZeroes = function(nums) { let left = nums.indexOf(0); if(left === -1) return nums; let right = left; for(let i = left; i < nums.length; i++) { if(nums[right] === 0) right++; else { ..

DP에 대해 아예 모르는 상태에서 문제를 풀려고 하니 기본문제라고 하는데도 풀 수 없었다. 그래서 DP에 대해 공부하고 문제를 다시 풀었고, 공부한 내용을 정리했다. 찾아보면서 좋았던 유튜브 영상 밑에 참고에 작성해놓았다. 문제 Leetcode Climbing Stairs 문제 input: 총 계단의 개수 n output: 1칸, 2칸으로만 올라갈 수 있고, 끝까지 올라갔을 때 경우의 수 📌 Dynamic Programming ✱Top-down - 작은 문제는 해결했다는 전제하에 큰 문제부터 : f(n), f(n-1), ..., f(2), f(1) - 생각의 과정은 자연스럽지만 스택의 limit이 있기 때문 좋은 방식은 아니다. - 재귀 1. 완전 재귀 → O(2^n) 2. 메모 재귀 → O(n) 재귀의..

문제 LeetCode 83. Remove Duplicates from Sorted List 문제 input: 싱글 링크드 리스트의 head node output: 중복 val인 노드들을 제거한 링크드 리스트의 head node // Definition for singly-linked list. function ListNode(val, next) { this.val = (val===undefined ? 0 : val) this.next = (next===undefined ? null : next) } 노드들은 val, next 속성을 가지고 있다. 나의 풀이 while문 마지막에 현재 노드를 다음 노드로 바꿔주고, 현재 노드가 끝까지 가서 null일 때 while문을 더 이상 돌지 않게 했다. ✱바깥 wh..

문제 LeetCode 7. Reverse Integer 문제 input: 32비트 정수 output: 32비트의 범위 밖이면 0을 리턴, 범위 내면 각 숫자를 뒤집어서 리턴(양,음은 그대로) 나의 풀이 1. 수를 배열로 만들어 쪼갠다. (toString, split) 2. 순서를 반대로 뒤집는다. - 제일 앞 문자가 '-'가 아니면 : 뒤집어서 합치고 숫자로 (reverse, join, parseInt) - 제일 앞 문자가 '-'일 경우 : 제일 앞 문자를 제외하고 뒤집어서 합치고 숫자로 (splice, reverse, join, parseInt) 3. 32비트의 범위 밖이면 0을 반환 아니면 result 반환 입력값이 음수일 때 '-'를 체크하는 부분이 뭔가 찝찝했는데 json님의 풀이를 보고 답답했던..