본문 바로가기

LeetCode91

LeetCode. Validate Binary Search Tree [Trees] Problem: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search trees. -Summary- 1. Create a helper function to r.. 2020. 6. 6.
LeetCode. Maximum Depth of Binary Tree [Trees] Problem: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Note: A leaf is a node with no children. Example: Given binary tree [3,9,20,null,null,15,7], return its depth = 3. -Summary- Solve recursively 1. Find the maximum length of depth by comparing the left and right subtree. 2. Add 1 .. 2020. 6. 5.
LeetCode. Linked List Cycle [Linked List] Problem: Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list. Example 1: Input: head = [3,2,0,-4], pos = 1 Output: true Explanation: There is a cycle in the linked list, where tail con.. 2020. 6. 4.
LeetCode. Palindrome Linked List [Linked List] Problem: Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false Example 2: Input: 1->2->2->1 Output: true -Summary- 1. Find a middle node using two-pointer in the original Linked list. (Fast and Slow) 2. Create a reverse_node and reverse the second half of the original Linked List 3. Compare 1st and 2nd half of the Linked list, if everything matches ret.. 2020. 6. 4.
LeetCode. Merge Two Sorted Lists [Linked List] Problem: Merge two sorted linked lists and return it as a new sorted list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4 -Summary- 1. Create a dummy and curr variables to track and merge the two lists. 2. Compare l1 and l2 value. 'curr' will connect to the less value. Update l1 or l2 depends on the res.. 2020. 6. 3.
LeetCode. Reverse Linked List [Linked List] Problem: Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL -Summary- 1. Keep track of current / prev (copy the original list in the curr and prev) 2. Update and move the head (original) 3. Return prev -Other iterative solution- # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = .. 2020. 6. 3.