본문 바로가기

알고리즘 문제풀이/leetcode142

[leetcode 621] Task Scheduler - 문제 이해가 어려웠다. return 값은 task를 전부 끝내기 위한 최소 소요 시간. 단 task를 수행하는데 있어서 조건이 있는데 하나의 task는 1unit시간에 끝난다. 하지만 같은 task사이엔 무조건 n유닛 이상의 쿨타임이 돌아야 한다. Given a characters array tasks, representing the tasks a CPU needs to do, where each letter represents a different task. Tasks could be done in any order. Each task is done in one unit of time. For each unit of time, the CPU could complete either one task o.. 2020. 10. 5.
[leetcode 71] Simplify Path 모든 경로를 canonical path로 바꾸는 문제 cf) canonical path란? 절대 경로는 절대 경로 인데 표준화된 절대 경로..? 무조건 경로 시작은 /로 시작하며 마지막엔 /가 붙지 않고 디렉토리 사이엔 하나의 /만 존재한다. .이나 ..도 모두 계산해서 꼭 필요한 경로만 남기는 것이다. 예를 보자. Example 1: Input: "/home/" Output: "/home" 마지막이 "/"로 끝나서 /를 없애주었다. Example 2: Input: "/../" Output: "/" Explanation: Going one level up from the root directory is a no-op, as the root level is the highest level you can g.. 2020. 10. 5.
[leetcode 230] Kth Smallest Element in a BST k번째 숫자 찾기 방법 - 전체를 inorder로 순회해서 벡터에 담는다. - k번째 원소를 꺼낸다. class Solution { public: void Traverse(TreeNode* root, vector &inorder){ if(root == nullptr){ return; } Traverse(root->left, inorder); inorder.push_back(root->val); Traverse(root->right, inorder); } int kthSmallest(TreeNode* root, int k) { vectorinorder; Traverse(root, inorder); return inorder[k-1]; } }; - 더 빠른 방법 stack을 사용해서 inorder를 만든다... 2020. 10. 4.
[leetcode 98] Validate Binary Search Tree root 노드를 중심으로 왼쪽 subtree는 전부 root 노드보다 값이 작아야 하고 오른쪽 subtree는 전부 root 노드보다 값이 커야 한다. - subtree에 있는 모든 노드가 조건을 만족해야 한다. - 같아도 안된다. 1) inorder를 이용한 방식-stack 사용 - stack을 사용하여 왼쪽 가장 아래 노드까지 내려간다. - subtree기준으로 어쨌든 오른쪽 노드가 가장 크면 되기 때문에 값의 크기를 비교한 후엔 현재노드를 right 노드로 설정한다. using namespace std; class Solution { public: bool isValidBST(TreeNode* root) { stacks; long long inorder = -LONG_MAX; while(!s.emp.. 2020. 10. 4.