ProjectWithSourceCodes
1.03K subscribers
293 photos
8 videos
43 files
1.35K links
Free Source Code Projects for Students šŸš€ | Python | Java | Android | Web Dev | AI/ML | Final Year Projects | BCA • BTech • MCA | Interview Prep | Job Alerts

Website: https://updategadh.com
Download Telegram
DSA CHEAT SHEET — Save This Post!
Most Asked Patterns in TCS Infosys Amazon Interviews!

====================================

90% of coding interviews use THESE 10 patterns.
Master these = crack any tech interview!

====================================
PATTERN 1: TWO POINTERS
Use when: Sorted array, find pairs, remove duplicates
Problems: Two Sum, Reverse String, 3Sum
Logic: left=0, right=n-1, move based on condition
Companies: Amazon, Microsoft, TCS

PATTERN 2: SLIDING WINDOW
Use when: Subarray/substring with condition
Problems: Max sum subarray, Longest substring
Logic: Expand right, shrink left when invalid
Companies: Infosys, Wipro, Google

PATTERN 3: BINARY SEARCH
Use when: Sorted array, find position/condition
Problems: Search in rotated array, Find peak
Logic: mid = (lo+hi)//2, eliminate half each time
Companies: Amazon, Flipkart, Accenture

PATTERN 4: LINKED LIST (Fast & Slow Pointer)
Use when: Cycle detection, find middle
Problems: Detect cycle, Find middle, Palindrome
Logic: slow moves 1 step, fast moves 2 steps
Companies: TCS, Infosys, HCL

PATTERN 5: TREE BFS (Level Order)
Use when: Level-by-level traversal, shortest path
Problems: Level order, Zigzag, Right side view
Logic: Use queue, process level by level
Companies: Amazon, Cognizant, Capgemini

====================================
PATTERN 6: TREE DFS
Use when: Path sum, depth, validate BST
Problems: Max depth, Path sum, Inorder traversal
Logic: Recursion — visit node, left, right
Companies: Microsoft, Wipro, IBM

PATTERN 7: DYNAMIC PROGRAMMING
Use when: Optimization, count ways, max/min
Problems: Fibonacci, Knapsack, LCS, Coin change
Logic: Break into subproblems, store results
Companies: Amazon, Goldman Sachs, Barclays

PATTERN 8: STACK
Use when: Matching brackets, next greater element
Problems: Valid Parentheses, Stock Span, Min Stack
Logic: Push/pop based on LIFO order
Companies: TCS, Accenture, Infosys

PATTERN 9: HASHING (HashMap)
Use when: Count frequency, find duplicates, grouping
Problems: Two Sum, Anagram, Group Anagrams
Logic: key=element, value=count/index
Companies: Google, Amazon, Flipkart

PATTERN 10: GREEDY
Use when: Local optimal = global optimal
Problems: Activity selection, Jump game, Intervals
Logic: Always pick the best option at each step
Companies: Wipro, HCL, Mindtree

====================================
MUST KNOW COMPLEXITY:

Array access -> O(1)
Binary Search -> O(log n)
Linear Search -> O(n)
Bubble Sort -> O(n2)
Merge/Quick Sort-> O(n log n)
HashMap get/put -> O(1) average
BFS/DFS -> O(V + E)

====================================
30-DAY DSA PLAN FOR PLACEMENTS:

Week 1: Arrays + Strings + Hashing
Week 2: Linked List + Stack + Queue
Week 3: Trees + Binary Search
Week 4: DP + Greedy + Mock Tests

Practice on: LeetCode / GeeksForGeeks
Target: 2 problems daily = 60 problems/month

====================================
SAVE this post now!
You will need it before every interview!

Want FREE projects for your resume too?
https://t.me/Projectwithsourcecodes

Share with your placement batch!

#DSA #DataStructures #Algorithms #CodingInterview
#TCS #Infosys #Wipro #Amazon #Microsoft #Google
#LeetCode #PlacementPrep #CampusPlacement
#BTech2026 #MCA2026 #BCA2026 #OffCampus
#DynamicProgramming #BinarySearch #LinkedList
#ProjectWithSourceCodes #StudentsOfIndia #Coding
ā¤1
5 TRENDING AI & GENAI PROJECTS
Build These to Get Hired in 2025-26!

====================================
PROJECT 1: AI Interview Coach

Tech: Python + Gemini API + Streamlit
Build: Mock interview Q&A, answer feedback, HR + technical rounds

====================================
PROJECT 2: Document Q&A Bot (RAG)

Tech: Python + LangChain + ChromaDB
Build: Upload PDF, ask questions, retrieval-augmented answers

====================================
PROJECT 3: AI Image Caption Generator

Tech: Python + Vision Transformer
Build: Auto-generate captions for images, accessibility use case

====================================
PROJECT 4: Voice Assistant App

Tech: Python + Whisper + Gemini
Build: Speech-to-text, AI answers, text-to-speech replies

====================================
PROJECT 5: AI Code Reviewer

Tech: Python + Gemini API + GitHub API
Build: Auto-review pull requests, suggest fixes, style checks

====================================
Each project = 1 strong resume line +
1 great interview story. Start this weekend!

Want full source code for these projects?
https://t.me/Projectwithsourcecodes

Comment which project you want next!

#Projects #FinalYearProject #Coding
#BTech2026 #MCA2026 #BCA2026
#ProjectWithSourceCodes #StudentsOfIndia
5 GITHUB REPOS TO MASTER PYTHON
Free - Star, Learn & Build!

====================================

1. Awesome Python (vinta) - 309K stars
A curated list of the best Python frameworks, libraries & tools
Best for: discovering the right tool for any project
https://github.com/vinta/awesome-python

2. Python-100-Days (jackfrued) - 184K stars
Go from newbie to master in 100 days, step by step
Best for: a complete structured learning path
https://github.com/jackfrued/Python-100-Days

3. 30 Days of Python (Asabeneh) - 68K stars
A 30-day beginner-friendly Python challenge
Best for: building a daily coding habit
https://github.com/Asabeneh/30-Days-Of-Python

4. Python Patterns (faif) - 42K stars
Design patterns & idioms implemented in Python
Best for: writing clean, professional code
https://github.com/faif/python-patterns

5. Python Examples (geekcomputers) - 35K stars
Hundreds of small, practical Python scripts
Best for: learning by reading real, simple code
https://github.com/geekcomputers/Python

====================================
SMART PYTHON PLAN:

Follow ONE path daily (100 Days or 30 Days)
Recreate small scripts from Python Examples
Learn patterns once you know the basics
Push all practice code to GitHub = portfolio!

====================================
Want ready-made Python projects with source code?
https://t.me/Projectwithsourcecodes

Share with your coding friends!

#Python #LearnPython #Programming #DataScience
#Automation #GitHub #OpenSource #Coding
#BTech2026 #MCA2026 #BCA2026 #FinalYearProject
#ProjectWithSourceCodes #StudentsOfIndia
šŸš€ Coding Interview Questions with Answers (Part :-1)

1ļøāƒ£8ļøāƒ£9ļøāƒ£ Check if Two Strings are Anagrams
šŸ‘‰ Same characters, same frequency, different order.

python
s1, s2 = "listen", "silent"
print(sorted(s1) == sorted(s2))

ā± O(n log n)

1ļøāƒ£9ļøāƒ£0ļøāƒ£ Factorial of a Number
šŸ‘‰ Product of all integers from 1 to n.

python
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result

ā± O(n)

1ļøāƒ£9ļøāƒ£1ļøāƒ£ Check if a Number is Prime
šŸ‘‰ Divisible only by 1 and itself.

python
def is_prime(n):
if n < 2: return False
for i in range(2, int(n**0.5)+1):
if n % i == 0: return False
return True

ā± O(√n)

1ļøāƒ£9ļøāƒ£2ļøāƒ£ Fibonacci Sequence
šŸ‘‰ Sum of the two preceding numbers.

python
def fibonacci(n):
seq = [0, 1]
while len(seq) < n:
seq.append(seq[-1]+seq[-2])
return seq[:n]

ā± O(n)

1ļøāƒ£9ļøāƒ£3ļøāƒ£ GCD of Two Numbers
šŸ‘‰ Euclidean algorithm.

python
def gcd(a, b):
while b:
a, b = b, a % b
return a

ā± O(log(min(a,b)))

1ļøāƒ£9ļøāƒ£4ļøāƒ£ Frequency of Elements
šŸ‘‰ Count occurrences using Counter.

python
from collections import Counter
print(Counter([1,2,2,3,3,3]))

ā± O(n)

1ļøāƒ£9ļøāƒ£5ļøāƒ£ Rotate Array by K Positions
šŸ‘‰ Slice and swap.

python
def rotate(arr, k):
k = k % len(arr)
return arr[-k:] + arr[:-k]

ā± O(n)

šŸ’¬ Save this for your next interview prep! Which topic should Part 2 cover — Linked Lists, Trees, or Sorting Algorithms? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
šŸš€ Coding Interview Questions with Answers (Part:-2)

1ļøāƒ£9ļøāƒ£6ļøāƒ£ Find All Pairs with a Given Sum
šŸ‘‰ Use a set to track complements while scanning.

python
def find_pairs(arr, target):
seen, pairs = set(), []
for num in arr:
complement = target - num
if complement in seen:
pairs.append((complement, num))
seen.add(num)
return pairs

print(find_pairs([2,4,3,7,1,5], 7))

ā± O(n)

1ļøāƒ£9ļøāƒ£7ļøāƒ£ Check if an Array is Sorted
šŸ‘‰ Compare each element with the next one.

python
def is_sorted(arr):
return all(arr[i] <= arr[i+1] for i in range(len(arr)-1))

print(is_sorted([1,2,3,4,5]))

ā± O(n)

1ļøāƒ£9ļøāƒ£8ļøāƒ£ Find the Intersection of Two Arrays
šŸ‘‰ Use set intersection to find common elements.

python
a = [1,2,3,4]
b = [3,4,5,6]
print(list(set(a) & set(b)))

ā± O(n+m)

1ļøāƒ£9ļøāƒ£9ļøāƒ£ Count Vowels in a String
šŸ‘‰ Loop through and check membership in a vowel set.

python
def count_vowels(s):
return sum(1 for ch in s.lower() if ch in "aeiou")

print(count_vowels("Hello World"))

ā± O(n)

2ļøāƒ£0ļøāƒ£0ļøāƒ£ Check if a Number is a Power of Two
šŸ‘‰ A power of two has exactly one bit set — use bitwise AND trick.

python
def is_power_of_two(n):
return n > 0 and (n & (n-1)) == 0

print(is_power_of_two(16))

ā± O(1)

2ļøāƒ£0ļøāƒ£1ļøāƒ£ Flatten a Nested List
šŸ‘‰ Recursively unpack nested lists into a single flat list.

python
def flatten(lst):
result = []
for item in lst:
if isinstance(item, list):
result.extend(flatten(item))
else:
result.append(item)
return result

print(flatten([1, [2, 3, [4, 5]], 6]))

ā± O(n)

2ļøāƒ£0ļøāƒ£2ļøāƒ£ Find the First Non-Repeating Character
šŸ‘‰ Use a frequency count, then find the first with count 1.

python
from collections import Counter

def first_unique(s):
freq = Counter(s)
for ch in s:
if freq[ch] == 1:
return ch
return None

print(first_unique("swiss"))

ā± O(n)

šŸ’¬ Bookmark this for your next interview prep! Should Part 3 dive into Linked Lists, Binary Trees, or Sorting Algorithms? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
šŸš€ Coding Interview Questions with Answers (Part 3)

2ļøāƒ£0ļøāƒ£3ļøāƒ£ Find the Union of Two Arrays
šŸ‘‰ Combine both arrays and remove duplicates.

python
a = [1,2,3,4]
b = [3,4,5,6]
print(list(set(a) | set(b)))

ā± O(n+m)

2ļøāƒ£0ļøāƒ£4ļøāƒ£ Check if a String Contains Only Digits
šŸ‘‰ Use the built-in isdigit() method.

python
s = "12345"
print(s.isdigit())

ā± O(n)

2ļøāƒ£0ļøāƒ£5ļøāƒ£ Find the Sum of Digits of a Number
šŸ‘‰ Repeatedly extract the last digit and add it up.

python
def sum_of_digits(n):
total = 0
while n > 0:
total += n % 10
n //= 10
return total

print(sum_of_digits(12345))

ā± O(log n)

2ļøāƒ£0ļøāƒ£6ļøāƒ£ Reverse an Integer
šŸ‘‰ Convert to string, reverse, convert back — or use math.

python
def reverse_int(n):
sign = -1 if n < 0 else 1
n = abs(n)
reversed_num = int(str(n)[::-1])
return sign * reversed_num

print(reverse_int(-12345))

ā± O(log n)

2ļøāƒ£0ļøāƒ£7ļøāƒ£ Check if a String is a Subsequence of Another
šŸ‘‰ Use two pointers to compare characters in order.

python
def is_subsequence(s, t):
it = iter(t)
return all(ch in it for ch in s)

print(is_subsequence("abc", "ahbgdc"))

ā± O(n)

2ļøāƒ£0ļøāƒ£8ļøāƒ£ Find the Maximum Product of Two Numbers in an Array
šŸ‘‰ Sort and multiply the two largest values.

python
def max_product(arr):
arr.sort()
return arr[-1] * arr[-2]

print(max_product([1,5,3,9,2]))

ā± O(n log n)

2ļøāƒ£0ļøāƒ£9ļøāƒ£ Find All Permutations of a String
šŸ‘‰ Use recursion or the itertools.permutations function.

python
from itertools import permutations

s = "abc"
perms = ["".join(p) for p in permutations(s)]
print(perms)

ā± O(n!)

šŸ’¬ Save this for your next interview prep! Should Part 4 cover Linked Lists, Binary Trees, or Sorting Algorithms? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
šŸš€ Coding Interview Questions with Answers (Part 4)

2ļøāƒ£1ļøāƒ£0ļøāƒ£ Find the Longest Word in a String
šŸ‘‰ Split the string into words and track the longest one.
def longest_word(s):
words = s.split()
return max(words, key=len)

print(longest_word("The quick brown fox jumped"))

ā± O(n)

2ļøāƒ£1ļøāƒ£1ļøāƒ£ Check if Two Arrays are Equal (Same Elements, Any Order)
šŸ‘‰ Compare sorted versions of both arrays.
a = [1,2,3]
b = [3,2,1]
print(sorted(a) == sorted(b))

ā± O(n log n)

2ļøāƒ£1ļøāƒ£2ļøāƒ£ Find the Kth Largest Element in an Array
šŸ‘‰ Sort the array and pick the element at index -k.
def kth_largest(arr, k):
return sorted(arr)[-k]

print(kth_largest([3,2,1,5,6,4], 2))

ā± O(n log n)

2ļøāƒ£1ļøāƒ£3ļøāƒ£ Convert a Decimal Number to Binary
šŸ‘‰ Use Python's built-in bin() function.
n = 42
print(bin(n)[2:])

ā± O(log n)

2ļøāƒ£1ļøāƒ£4ļøāƒ£ Check if a Number is an Armstrong Number
šŸ‘‰ Sum of each digit raised to the power of digit count equals the number.
def is_armstrong(n):
digits = str(n)
power = len(digits)
return n == sum(int(d)**power for d in digits)

print(is_armstrong(153))

ā± O(log n)

2ļøāƒ£1ļøāƒ£5ļøāƒ£ Find the Common Elements Between Two Arrays (With Duplicates)
šŸ‘‰ Use Counter intersection to preserve duplicate counts.
from collections import Counter

a = [1,2,2,3]
b = [2,2,3,4]
common = list((Counter(a) & Counter(b)).elements())
print(common)

ā± O(n+m)

2ļøāƒ£1ļøāƒ£6ļøāƒ£ Check for Balanced Parentheses
šŸ‘‰ Use a stack to match opening and closing brackets.
def is_balanced(s):
stack = []
pairs = {')':'(', ']':'[', '}':'{'}
for ch in s:
if ch in "([{":
stack.append(ch)
elif ch in ")]}":
if not stack or stack.pop() != pairs[ch]:
return False
return not stack

print(is_balanced("{[()]}"))

ā± O(n)

šŸ’¬ Save this for your next interview prep! Should Part 5 cover Linked Lists, Binary Trees, or Sorting Algorithms? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
šŸš€ Coding Interview Questions with Answers (Part 5)

2ļøāƒ£1ļøāƒ£7ļøāƒ£ Find the Middle Element of a Linked List
šŸ‘‰ Use the slow-fast pointer technique — fast moves 2x speed of slow.
class Node:
def __init__(self, data):
self.data = data
self.next = None

def find_middle(head):
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
return slow.data

ā± O(n)

2ļøāƒ£1ļøāƒ£8ļøāƒ£ Reverse a Linked List
šŸ‘‰ Iteratively reverse the next pointer of each node.
def reverse_list(head):
prev = None
curr = head
while curr:
nxt = curr.next
curr.next = prev
prev = curr
curr = nxt
return prev

ā± O(n)

2ļøāƒ£1ļøāƒ£9ļøāƒ£ Detect a Cycle in a Linked List
šŸ‘‰ Floyd's cycle detection — if fast catches slow, there's a loop.
def has_cycle(head):
slow = fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
return True
return False

ā± O(n)

2ļøāƒ£2ļøāƒ£0ļøāƒ£ Merge Two Sorted Linked Lists
šŸ‘‰ Compare nodes from both lists and link the smaller one each time.
def merge_lists(l1, l2):
dummy = Node(0)
tail = dummy
while l1 and l2:
if l1.data < l2.data:
tail.next, l1 = l1, l1.next
else:
tail.next, l2 = l2, l2.next
tail = tail.next
tail.next = l1 or l2
return dummy.next

ā± O(n+m)

2ļøāƒ£2ļøāƒ£1ļøāƒ£ Remove the Nth Node from the End of a Linked List
šŸ‘‰ Use two pointers with a gap of n between them.
def remove_nth_from_end(head, n):
dummy = Node(0)
dummy.next = head
fast = slow = dummy
for _ in range(n):
fast = fast.next
while fast.next:
fast = fast.next
slow = slow.next
slow.next = slow.next.next
return dummy.next

ā± O(n)

2ļøāƒ£2ļøāƒ£2ļøāƒ£ Check if a Linked List is a Palindrome
šŸ‘‰ Reverse the second half and compare it with the first half.
def is_palindrome(head):
vals = []
while head:
vals.append(head.data)
head = head.next
return vals == vals[::-1]

ā± O(n)

2ļøāƒ£2ļøāƒ£3ļøāƒ£ Find the Intersection Point of Two Linked Lists
šŸ‘‰ Traverse both lists, switching heads when reaching the end, so paths align.
def get_intersection(headA, headB):
a, b = headA, headB
while a != b:
a = a.next if a else headB
b = b.next if b else headA
return a

ā± O(n+m)

šŸ’¬ Save this for your next interview prep! Should Part 6 cover Binary Trees, Sorting Algorithms, or Stacks & Queues? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
šŸš€ Coding Interview Questions with Answers (Part 6)

2ļøāƒ£2ļøāƒ£4ļøāƒ£ Find the Height of a Binary Tree
šŸ‘‰ Recursively find the max depth of left and right subtrees.
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None

def tree_height(root):
if not root:
return 0
return 1 + max(tree_height(root.left), tree_height(root.right))

ā± O(n)

2ļøāƒ£2ļøāƒ£5ļøāƒ£ Perform an Inorder Traversal of a Binary Tree
šŸ‘‰ Visit left subtree, then root, then right subtree.
def inorder(root, result=None):
if result is None:
result = []
if root:
inorder(root.left, result)
result.append(root.data)
inorder(root.right, result)
return result

ā± O(n)

2ļøāƒ£2ļøāƒ£6ļøāƒ£ Perform a Level Order Traversal (BFS) of a Binary Tree
šŸ‘‰ Use a queue to visit nodes level by level.
from collections import deque

def level_order(root):
result = []
queue = deque([root])
while queue:
node = queue.popleft()
if node:
result.append(node.data)
queue.append(node.left)
queue.append(node.right)
return result

ā± O(n)

2ļøāƒ£2ļøāƒ£7ļøāƒ£ Check if a Binary Tree is a Valid BST
šŸ‘‰ Recursively verify each node falls within a valid min/max range.
def is_valid_bst(root, low=float('-inf'), high=float('inf')):
if not root:
return True
if not (low < root.data < high):
return False
return (is_valid_bst(root.left, low, root.data) and
is_valid_bst(root.right, root.data, high))

ā± O(n)

2ļøāƒ£2ļøāƒ£8ļøāƒ£ Find the Lowest Common Ancestor in a BST
šŸ‘‰ Traverse down; split point where paths diverge is the LCA.
def lowest_common_ancestor(root, p, q):
while root:
if p < root.data and q < root.data:
root = root.left
elif p > root.data and q > root.data:
root = root.right
else:
return root.data

ā± O(h)

2ļøāƒ£2ļøāƒ£9ļøāƒ£ Check if Two Binary Trees are Identical
šŸ‘‰ Compare values and recursively check both subtrees.
def is_identical(t1, t2):
if not t1 and not t2:
return True
if not t1 or not t2:
return False
return (t1.data == t2.data and
is_identical(t1.left, t2.left) and
is_identical(t1.right, t2.right))

ā± O(n)

2ļøāƒ£3ļøāƒ£0ļøāƒ£ Find the Diameter of a Binary Tree
šŸ‘‰ The longest path between any two nodes — may or may not pass through root.
def diameter(root):
result = [0]
def depth(node):
if not node:
return 0
left = depth(node.left)
right = depth(node.right)
result[0] = max(result[0], left + right)
return 1 + max(left, right)
depth(root)
return result[0]

ā± O(n)

šŸ’¬ Save this for your next interview prep! Should Part 7 cover Sorting Algorithms, Stacks & Queues, or Graphs? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa
ā¤1
šŸš€ Coding Interview Questions with Answers (Part 7)

2ļøāƒ£3ļøāƒ£1ļøāƒ£ Implement Bubble Sort
šŸ‘‰ Repeatedly compare adjacent elements and swap them if they are in the wrong order.

def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr


ā± O(n²)

2ļøāƒ£3ļøāƒ£2ļøāƒ£ Implement Selection Sort
šŸ‘‰ Find the smallest element and place it at the correct position.

def selection_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr


ā± O(n²)

2ļøāƒ£3ļøāƒ£3ļøāƒ£ Implement Insertion Sort
šŸ‘‰ Build the sorted array one element at a time.

def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1

while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1

arr[j + 1] = key

return arr


ā± O(n²)

2ļøāƒ£3ļøāƒ£4ļøāƒ£ Implement Merge Sort
šŸ‘‰ Divide the array into smaller parts, sort them, and merge them.

def merge_sort(arr):
if len(arr) <= 1:
return arr

mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])

result = []
i = j = 0

while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1

result.extend(left[i:])
result.extend(right[j:])

return result


ā± O(n log n)

2ļøāƒ£3ļøāƒ£5ļøāƒ£ Implement Quick Sort
šŸ‘‰ Select a pivot and partition the array around it.

def quick_sort(arr):
if len(arr) <= 1:
return arr

pivot = arr[-1]
left = [x for x in arr[:-1] if x <= pivot]
right = [x for x in arr[:-1] if x > pivot]

return quick_sort(left) + [pivot] + quick_sort(right)


ā± Average O(n log n) | Worst O(n²)

2ļøāƒ£3ļøāƒ£6ļøāƒ£ Implement a Stack Using a List
šŸ‘‰ Use the end of the list for efficient push and pop operations.

class Stack:
def __init__(self):
self.items = []

def push(self, item):
self.items.append(item)

def pop(self):
if self.items:
return self.items.pop()
return None

def peek(self):
return self.items[-1] if self.items else None


ā± O(1) for push/pop

2ļøāƒ£3ļøāƒ£7ļøāƒ£ Implement a Queue Using deque
šŸ‘‰ Add elements from the rear and remove them from the front.

from collections import deque

class Queue:
def __init__(self):
self.items = deque()

def enqueue(self, item):
self.items.append(item)

def dequeue(self):
if self.items:
return self.items.popleft()
return None


ā± O(1) for enqueue/dequeue

šŸ’¬ Save this for your next interview prep!

šŸ”„ Should Part 8 cover Graphs, Dynamic Programming, or Recursion & Backtracking? šŸ‘‡

#coding #interview #python #programming #softwareengineer #dsa