알고리즘 문제풀이/LeetCode
-
[LeetCode] Reverse Linked List (C++)알고리즘 문제풀이/LeetCode 2021. 3. 15. 00:08
leetcode.com/problems/reverse-linked-list/ Reverse Linked List - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 연결리스트의 참조 방향을 바꾸는 문제였습니다. iterator와 recursive 두가지 풀이 방식이 존재합니다. iterator /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * List..
-
[LeetCode] Majority Element (C++)알고리즘 문제풀이/LeetCode 2021. 3. 14. 16:53
leetcode.com/problems/majority-element/ Majority Element - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 배열에서 과반수 이상 존재하는 원소가 있을 때, 이를 구하는 문제입니다. map을 활용할 경우, 주어진 배열의 빈도수를 전부 map에 기록하고, 빈도 수가 가장 큰 것을 찾으면 됩니다. /* map * time complexity : O(N) * space complexity : O(N) */ class ..
-
[LeetCode] Intersection of Two Linked Lists (C++)알고리즘 문제풀이/LeetCode 2021. 3. 11. 00:31
leetcode.com/problems/intersection-of-two-linked-lists/ Intersection of Two Linked Lists - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 두 연결리스트가 주어졌을 때 만나는 지점을 찾는 문제입니다. Discuss에서 나온 풀이를 참고하여 해결했는데, 매우 신기한 풀이였습니다. 투포인터를 이용한 풀이였는데, headA와 headB를 각각 p1, p2로 가리키고 각각 null을 가리킬 때마다 h..
-
[LeetCode] Min Stack (C++)알고리즘 문제풀이/LeetCode 2021. 3. 10. 00:39
leetcode.com/problems/min-stack/submissions/ Min Stack - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 최소값을 리턴하는 스택을 구현하는 문제였습니다. /* vector */ class MinStack { public: vector v; /** initialize your data structure here. */ MinStack() { } void push(int x) { v.push_back(x); } void p..
-
[LeetCode] Linked List Cycle (C++)알고리즘 문제풀이/LeetCode 2021. 3. 9. 00:44
leetcode.com/problems/linked-list-cycle/ Linked List Cycle - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com unordred_map 자료구조를 이용하여 ListNode*의 빈도가 2번 이상 나오는 경우를 찾는 방법과 투 포인터를 이용해 fast 포인터와 slow 포인터가 만나는지를 확인하는 방법이 있습니다. /** * Definition for singly-linked list. * struct ListNode { ..
-
[LeetCode] Maximum Depth of Binary Tree (C++)알고리즘 문제풀이/LeetCode 2021. 3. 6. 18:10
leetcode.com/problems/maximum-depth-of-binary-tree/ Maximum Depth of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 역시나 리스트를 사용해 포인터의 개념이 필요했습니다. 트리의 DFS, BFS 탐색을 해보는 문제였습니다. /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ..
-
[LeetCode] Merge Two Sorted Lists (C++)알고리즘 문제풀이/LeetCode 2021. 3. 4. 23:06
leetcode.com/problems/merge-two-sorted-lists/ Merge Two Sorted Lists - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 정렬되어 있는 두개의 리스트가 주어지고, 이를 오름차순으로 병합하는 문제였습니다. 포인터를 이해하고 잘 사용할 수 있는지가 중요했습니다. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne..
-
[LeetCode/easy] Single Number (C++)알고리즘 문제풀이/LeetCode 2021. 2. 8. 23:17
leetcode.com/problems/single-number/ 먼저 hash를 이용한 풀이입니다. unordered_map을 선언하여 key는 수, value는 빈도 수를 저장합니다. iterator로 map을 탐색하면서 value 값이 1인 key를 리턴하면 해결할 수 있습니다. class Solution { public: int singleNumber(vector& nums) { unordered_map um; for(auto n : nums) { um[n]++; } for(auto it = um.begin(); it != um.end(); it++) { if(it -> second == 1) { return it -> first; } } return 0; } }; 다음은 bit 연산을 이용한 풀..