NoobCodes Documentation
website·Indexed 29 days ago
https://noobcodes-docs.netlify.appA collection of coding problem statements and solutions categorized by company (including Microsoft, Facebook, Amazon, Goldman Sachs, and PayPal) and curated lists like Blind 75. Covers algorithmic challenges such as Binary Tree Maximum Path Sum, LRU Cache, and various dynamic programming and string manipulation problems.
What's inside NoobCodes
- NoobCodes provides a collection of interview questions aggregated from sources including GeeksForGeeks, InterviewBit, and LeetCode. Solutions are primarily provided in Python 3, with some available in Java.
Find the minimum depth of a binary tree
The minimum depth of a binary tree is defined as the number of nodes along the shortest path from the root node down to the nearest leaf node. A leaf node is defined as a node with no children. For a tree with 0 nodes, the depth is 0.Prepare for Amazon system design and CS fundamental questions
Beyond coding, Amazon interviews may cover the following technical domains:
- Operating Systems: Memory management, processes, threads, synchronization, paging, and multithreading/deadlocks.
- Networking: High-level browser functions, DNS lookups, TCP/IP, and socket connections.
- Object-Oriented Design (OOD): General OOP concepts and applying them to design problems.
- System Design Example: Designing an Online Bookstore (considering book types, user scale, transaction volume, and interface types).
Answer Amazon behavioral interview questions using the STAR method
Amazon uses behavioral-based questions to predict candidate success based on past actions. These questions typically begin with "Tell me about a time..." or "Give me an example of..." and are rooted in Amazon's Leadership Principles. To provide structured and effective responses, use the STAR method:
- SITUATION: Describe the context or the task you needed to accomplish. Provide enough detail for the interviewer to understand the complexities.
- TASK: Clearly state the goal you were working toward.
- ACTION: Explain the specific steps you took. Focus on your individual contribution using "I" instead of "we."
- RESULT: Describe the outcome. Use metrics or data to quantify your success and explain what you learned.
Key tips for Amazon interviews:
- Avoid generalizations; provide one detailed account per question.
- Use data and metrics to support your examples.
- Be honest and straightforward; do not embellish.
- Be prepared to discuss failures, as Amazon views failure as a necessary part of innovation.
Understand Amazon's narrative writing culture for interviews
Amazon avoids PowerPoint and slide-oriented presentations. Instead, the company uses narratively structured memos (typically one to six pages) that articulate project goals, approaches, outcomes, and next steps. Because of this culture, some roles may require a writing sample during the interview process to assess the candidate's ability to articulate thoughts in a written format.Answer Amazon behavioral interview questions using the STAR method
Amazon uses behavioral-based interviews to predict candidate success based on past actions. These questions typically begin with "Tell me about a time..." or "Give me an example of...". The STAR method is the recommended structured approach for responding:
- SITUATION: Describe the context or the task you needed to accomplish. Provide enough detail for the interviewer to understand the complexities.
- TASK: Define the specific goal you were working toward.
- ACTION: Detail the specific steps YOU took. Focus on your individual contribution using "I" instead of "we".
- RESULT: Describe the outcome, what you accomplished, and what you learned. Use metrics or data to support your results.
Key tips for Amazon interviews:
- Data-Driven: Amazon is a data-driven company; provide examples using metrics whenever possible.
- Leadership Principles: Align your examples with Amazon's Leadership Principles (e.g., "Have Backbone; Disagree and Commit" and "Deliver Results").
- Failure is Valued: Be prepared to discuss risks and failures, as Amazon views failure as a necessary part of innovation.
- Conciseness: Be succinct and pause to ask the interviewer if they need more depth.
Example Behavioral Questions: - Tell me about a time when you were faced with a problem that had a number of possible solutions. How did you determine the course of action? - When did you take a risk, make a mistake, or fail? How did you respond? - Describe a time you took the lead on a project. - How have you leveraged data to develop a strategy?Insert a node at the beginning of a linked list
To insert a node at the beginning, create a new node and set itsnextNodepointer to the currentheadof the list. Then, update theheadof the list to be the new node. If the list is empty, the new node simply becomes thehead.def insertAtBeginning(self, value): node = linkedListNode(value) if(self.head is None): self.head = node return node.nextNode = self.head self.head = nodeReorder a singly linked list into interleaved order
To reorder a singly linked list from the formL0 → L1 → … → Ln-1 → LntoL0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …, you must manipulate the nodes themselves without modifying their values. The process involves three primary steps: splitting the list into two halves, reversing the second half, and merging the two halves by interleaving their nodes.class Solution: # @param head, a ListNode # @return nothing def reorderList(self, head): if not head or not head.next: return # 1. Split the list into two halves a, b = _splitList(head) # 2. Reverse the second half b = _reverseList(b) # 3. Merge the two halves by interleaving head = _mergeLists(a, b) def _splitList(head): fast = head slow = head while fast and fast.next: slow = slow.next fast = fast.next fast = fast.next middle = slow.next slow.next = None return head, middle def _reverseList(head): last = None currentNode = head while currentNode: nextNode = currentNode.next currentNode.next = last last = currentNode currentNode = nextNode return last def _mergeLists(a, b): tail = a head = a a = a.next while b: tail.next = b tail = tail.next b = b.next if a: a, b = b, a return headFind the smallest range covering elements from k sorted lists
Given
klists of integers sorted in non-decreasing order, the goal is to find the smallest range[a, b]that contains at least one number from each of theklists.Range Comparison Rules:
- Range
[a, b]is smaller than[c, d]ifb - a < d - c. - If
b - a == d - c, then[a, b]is smaller ifa < c.
Constraints:
- Number of lists
k: 1 to 3500. - Length of each list
nums[i]: 1 to 50. - Element values: between -10^5 and 10^5.
- Each list is sorted in non-decreasing order.
- Range
Insert a node at the end of a linked list
To insert a node at the end, traverse the list until you reach the node wherenextNodeisNone. Set that final node'snextNodeto the new node. If the list is empty, the new node becomes thehead.def insertAtEnd(self, value): node = linkedListNode(value) if(self.head is None): self.head = node return currentNode = self.head while True: if(currentNode.nextNode is None): currentNode.nextNode = node break currentNode = currentNode.nextNodeImplement a string-to-integer (atoi) conversion function
The
myAtoi(string s)function converts a string to a 32-bit signed integer by following these specific algorithmic steps:- Whitespace: Ignore any leading space characters (
' '). - Sign: Check if the next character is
'-'or'+'. This determines if the result is negative or positive. Default to positive if neither is present. - Digit Extraction: Read characters until a non-digit character or the end of the string is reached. Convert these digits into an integer. If no digits are read, the integer is
0. - Clamping: If the resulting integer is outside the 32-bit signed integer range $[-2^{31}, 2^{31} - 1]$, clamp it to the nearest boundary ($-2^{31}$ for underflow, $2^{31} - 1$ for overflow).
Constraints:
- String length: $0 \le s.length \le 200$.
- Allowed characters: English letters, digits (0-9),
' ','+','-', and'.'. Only the space character' 'is considered whitespace.
- Whitespace: Ignore any leading space characters (
Solve the 3 Sum Closest problem
Given an integer array
numsand an integertarget, find three integers in the array such that their sum is closest to the target. The solution assumes exactly one answer exists.Constraints:
- Array length:
3 <= nums.length <= 500 - Element values:
-1000 <= nums[i] <= 1000 - Target value:
-10^4 <= target <= 10^4
class Solution: def threeSumClosest(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ if not nums or len(nums) < 3 : return [] nums.sort() closest = nums[0]+ nums[1] + nums[2] max_error = abs(nums[0]+ nums[1] + nums[2] - target) for i in range(len(nums)-2): if i >=1 and nums[i] == nums[i-1]: continue base = nums[i] lp = i+1 rp = len(nums)-1 s = base + nums[lp] + nums[rp] while lp < rp : s = base + nums[lp] + nums[rp] if abs(s - target) < max_error: max_error = abs(s - target) closest = s if s < target : # s < target means lp go right lp += 1 elif s > target : rp -= 1 else: return target return closest- Array length: