ProjectWithSourceCodes
1.03K subscribers
340 photos
8 videos
68 files
1.38K 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
šŸš€ 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
ā¤2
šŸš€ 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
šŸš€ Advanced Coding Interview Questions with Answers (Part 1)

1ļøāƒ£ Find the Longest Substring Without Repeating Characters

šŸ‘‰ Given a string, find the length of the longest substring containing no duplicate characters.

def longest_unique_substring(s):
seen = set()
left = 0
max_length = 0

for right in range(len(s)):
while s[right] in seen:
seen.remove(s[left])
left += 1

seen.add(s[right])
max_length = max(max_length, right - left + 1)

return max_length

print(longest_unique_substring("abcabcbb"))


šŸ“Œ Output:

3


ā± Time Complexity: O(n)
šŸ’¾ Space Complexity: O(n)

---

2ļøāƒ£ Find the Kth Largest Element in an Array

šŸ‘‰ Find the Kth largest element without completely sorting the array.

import heapq

def kth_largest(nums, k):
heap = nums[:k]
heapq.heapify(heap)

for num in nums[k:]:
if num > heap[0]:
heapq.heapreplace(heap, num)

return heap[0]

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


šŸ“Œ Output:

5


ā± Time Complexity: O(n log k)
šŸ’¾ Space Complexity: O(k)

---

3ļøāƒ£ Detect a Cycle in a Linked List

šŸ‘‰ Determine whether a linked list contains a cycle using Floyd's Cycle Detection Algorithm.

def has_cycle(head):
slow = head
fast = head

while fast and fast.next:
slow = slow.next
fast = fast.next.next

if slow == fast:
return True

return False


šŸ’” The slow pointer moves one step while the fast pointer moves two steps.

ā± Time Complexity: O(n)
šŸ’¾ Space Complexity: O(1)

---

4ļøāƒ£ Find the Maximum Subarray Sum

šŸ‘‰ Find the contiguous subarray with the largest sum using Kadane's Algorithm.

def max_subarray_sum(nums):
current = nums[0]
maximum = nums[0]

for num in nums[1:]:
current = max(num, current + num)
maximum = max(maximum, current)

return maximum

print(max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4]))


šŸ“Œ Output:

6


ā± Time Complexity: O(n)
šŸ’¾ Space Complexity: O(1)

---

5ļøāƒ£ Merge Overlapping Intervals

šŸ‘‰ Given a collection of intervals, merge all overlapping intervals.

def merge_intervals(intervals):
intervals.sort(key=lambda x: x[0])
merged = []

for start, end in intervals:
if not merged or start > merged[-1][1]:
merged.append([start, end])
else:
merged[-1][1] = max(merged[-1][1], end)

return merged

print(merge_intervals([[1, 3], [2, 6], [8, 10], [9, 12]]))


šŸ“Œ Output:

[[1, 6], [8, 12]]


ā± Time Complexity: O(n log n)
šŸ’¾ Space Complexity: O(n)

---

šŸ’¬ Save this for your advanced coding interview preparation!

šŸ”„ Part 2 will cover 5 harder problems on Binary Search, Dynamic Programming, Graphs, Backtracking & Sliding Window.

#Coding #CodingInterview #Python #DSA #AdvancedCoding #Algorithms #DynamicProgramming #Graphs #Programming #TechInterview
šŸš€ Advanced Coding Interview Questions with Answers (Part 3)
1ļøāƒ£1ļøāƒ£ Find the Top K Frequent Elements
šŸ‘‰ Given an array, return the k elements that appear most frequently.
from collections import Counter

def top_k_frequent(nums, k):
frequency = Counter(nums)
return [num for num, count in frequency.most_common(k)]

print(top_k_frequent([1, 1, 1, 2, 2, 3], 2))

šŸ“Œ Output:
[1, 2]

ā±ļø Time Complexity: O(n log n)
šŸ’¾ Space Complexity: O(n)
1ļøāƒ£2ļøāƒ£ Generate All Permutations of a String
šŸ‘‰ Generate every possible arrangement of the characters in a string using Backtracking.
def permutations(s):
result = []

def backtrack(path, remaining):
if not remaining:
result.append("".join(path))
return

for i in range(len(remaining)):
backtrack(
path + [remaining[i]],
remaining[:i] + remaining[i + 1:]
)

backtrack([], s)
return result

print(permutations("ABC"))

šŸ“Œ Output:
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']

ā±ļø Time Complexity: O(n Ɨ n!)
šŸ’¾ Space Complexity: O(n Ɨ n!)
1ļøāƒ£3ļøāƒ£ Find the Minimum Coins for a Given Amount
šŸ‘‰ Given coin denominations, find the minimum number of coins required to make a target amount.
def min_coins(coins, amount):
dp = [float("inf")] * (amount + 1)
dp[0] = 0

for current in range(1, amount + 1):
for coin in coins:
if coin <= current:
dp[current] = min(
dp[current],
dp[current - coin] + 1
)

return dp[amount] if dp[amount] != float("inf") else -1

print(min_coins([1, 2, 5], 11))

šŸ“Œ Output:
3

šŸ’” 5 + 5 + 1 = 11
ā±ļø Time Complexity: O(amount Ɨ number of coins)
šŸ’¾ Space Complexity: O(amount)
1ļøāƒ£4ļøāƒ£ Find the Maximum Product Subarray
šŸ‘‰ Find the contiguous subarray whose elements have the largest product.
def max_product_subarray(nums):
current_max = nums[0]
current_min = nums[0]
result = nums[0]

for num in nums[1:]:
if num < 0:
current_max, current_min = current_min, current_max

current_max = max(num, current_max * num)
current_min = min(num, current_min * num)

result = max(result, current_max)

return result

print(max_product_subarray([2, 3, -2, 4]))

šŸ“Œ Output:
6

šŸ’” The maximum product comes from [2, 3].
ā±ļø Time Complexity: O(n)
šŸ’¾ Space Complexity: O(1)
1ļøāƒ£5ļøāƒ£ Implement an LRU Cache
šŸ‘‰ An LRU (Least Recently Used) Cache removes the item that has not been accessed for the longest time when the cache reaches its capacity.
from collections import OrderedDict

class LRUCache:
def __init__(self, capacity):
self.capacity = capacity
self.cache = OrderedDict()

def get(self, key):
if key not in self.cache:
return -1

self.cache.move_to_end(key)
return self.cache[key]

def put(self, key, value):
if key in self.cache:
self.cache.move_to_end(key)

self.cache[key] = value

if len(self.cache) > self.capacity:
self.cache.popitem(last=False)

šŸ“Œ Example:
cache = LRUCache(2)

cache.put(1, "A")
cache.put(2, "B")

print(cache.get(1))

cache.put(3, "C")

print(cache.get(2))

šŸ“Œ Output:
A
-1

ā±ļø Average Time Complexity: O(1) for get() and put()
šŸ’¾ Space Complexity: O(capacity)
šŸ’¬ Save this for your advanced coding interview preparation!
šŸ”„ Part 4 will cover 5 advanced problems on Dijkstra's Algorithm, Trie, Union-Find, Matrix & Dynamic Programming.
#Coding #CodingInterview #Python #DSA #AdvancedCoding #Algorithms #DynamicProgramming #Graph #DataStructures #Programming
šŸ¤– How to Build an AI Agent with Python?
Want to build your own AI Agent using Python? šŸšŸ”„
Learn how AI agents can understand tasks, make decisions, use tools, and automate workflows.

šŸ“Œ In this guide, learn:
šŸ”¹ What is an AI Agent?
šŸ”¹ How AI agents work
šŸ”¹ Python setup and requirements
šŸ”¹ Step-by-step AI Agent development
šŸ”¹ How to make your agent perform tasks
šŸ”¹ Practical implementation with Python

šŸš€ Read the Complete Tutorial:
How to Build an AI Agent with Python

šŸ“¢ Join: @ProjectWithSourceCodes
🌐 UPDATEGADH

#AI #AIAgent #Python #ArtificialIntelligence #PythonProjects #MachineLearning #AITutorial #Coding #Programming #UpdateGadh
5 GITHUB REPOS TO MASTER GIT & GITHUB
Free - Star, Learn & Practice!

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

1. gitignore (github) - 175K stars
A huge collection of useful .gitignore templates
Best for: keeping junk files out of your repos
https://github.com/github/gitignore

2. First Contributions - 56K stars
A beginner-friendly way to make your first open-source PR
Best for: your very first GitHub contribution
https://github.com/firstcontributions/first-contributions

3. Git Flight Rules - 42K stars
What to do when things go wrong in git - step by step
Best for: fixing git mistakes fast
https://github.com/k88hudson/git-flight-rules

4. Learn Git Branching - 34K stars
An interactive visual game to master git branching
Best for: understanding branches & merges visually
https://github.com/pcottle/learnGitBranching

5. Pro Git 2nd Edition - 6.5K stars
The complete, official Pro Git book - free
Best for: deep, thorough git knowledge
https://github.com/progit/progit2

====================================
WHY THIS MATTERS:

Recruiters check your GitHub profile & activity
Open-source PRs stand out on your resume
Good git habits = smooth team projects
Practice daily - commit something every day!

====================================
Want ready-made projects to push to GitHub?
https://t.me/Projectwithsourcecodes

Share with your coding friends!

#Git #GitHub #OpenSource #VersionControl #Coding
#Programming #DeveloperTools #FirstContribution
#BTech2026 #MCA2026 #BCA2026 #FinalYearProject
#ProjectWithSourceCodes #StudentsOfIndia
šŸš€ GPT-6 vs Cloud AI: Why Is GPT-6 Better?

AI technology is moving beyond simple chatbots šŸ¤–

In this new guide, we explore GPT-6 Astra vs Cloud AI and understand what makes GPT-6 suitable for complex AI workloads.

šŸ” What you'll learn:
• GPT-6 Astra explained
• GPT-6 vs Cloud AI comparison
• Advanced reasoning capabilities
• AI coding and software development
• Computer-use capabilities
• 1.05M token context window
• Tool calling and AI workflows
• GPT-6 API for developers
• How GPT-6 and Cloud AI can work together

šŸ’” Perfect for AI students, developers, programmers, and tech enthusiasts who want to understand the next generation of AI models.

šŸ“– Read Full Article:
https://updategadh.com/gpt-6-vs-cloud-ai-why-is-gpt-6-better/


#GPT6 #GPT6Astra #CloudAI #ArtificialIntelligence #GenerativeAI #AI #OpenAI #AIProgramming #AITutorial #MachineLearning #Coding #TechUpdates
šŸš€ Advanced Coding Interview Questions with Answers (Part 4)
1ļøāƒ£6ļøāƒ£ Find the Shortest Path Using Dijkstra's Algorithm
šŸ‘‰ Dijkstra's Algorithm finds the shortest path from a source node to other nodes in a graph with non-negative edge weights.
import heapq

def dijkstra(graph, start):
distances = {node: float("inf") for node in graph}
distances[start] = 0

heap = [(0, start)]

while heap:
distance, node = heapq.heappop(heap)

if distance > distances[node]:
continue

for neighbor, weight in graph[node]:
new_distance = distance + weight

if new_distance < distances[neighbor]:
distances[neighbor] = new_distance
heapq.heappush(heap, (new_distance, neighbor))

return distances

ā±ļø Time Complexity: O((V + E) log V)
1ļøāƒ£7ļøāƒ£ Implement a Trie
šŸ‘‰ A Trie is a tree-based data structure commonly used for prefix searching and autocomplete.
class TrieNode:
def __init__(self):
self.children = {}
self.is_end = False


class Trie:
def __init__(self):
self.root = TrieNode()

def insert(self, word):
node = self.root

for char in word:
if char not in node.children:
node.children[char] = TrieNode()

node = node.children[char]

node.is_end = True

def search(self, word):
node = self.root

for char in word:
if char not in node.children:
return False
node = node.children[char]

return node.is_end

ā±ļø Time Complexity: O(L) per operation
L = length of the word
1ļøāƒ£8ļøāƒ£ Find Connected Components Using Union-Find
šŸ‘‰ Union-Find, also called Disjoint Set Union (DSU), efficiently manages groups of connected elements.
class DSU:
def __init__(self, n):
self.parent = list(range(n))

def find(self, x):
if self.parent[x] != x:
self.parent[x] = self.find(self.parent[x])
return self.parent[x]

def union(self, a, b):
root_a = self.find(a)
root_b = self.find(b)

if root_a != root_b:
self.parent[root_b] = root_a

šŸ’” It is commonly used in graph connectivity and Kruskal's algorithm.
ā±ļø Amortized Time: Nearly O(1) per operation with path compression and union by rank/size.
1ļøāƒ£9ļøāƒ£ Rotate a Matrix 90 Degrees Clockwise
šŸ‘‰ Rotate an n Ɨ n matrix 90 degrees clockwise in place.
def rotate(matrix):
n = len(matrix)

for i in range(n):
for j in range(i + 1, n):
matrix[i][j], matrix[j][i] = (
matrix[j][i],
matrix[i][j]
)

for row in matrix:
row.reverse()

return matrix

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

print(rotate(matrix))

šŸ“Œ Output:
[[7, 4, 1],
[8, 5, 2],
[9, 6, 3]]

ā±ļø Time Complexity: O(n²)
šŸ’¾ Space Complexity: O(1)
2ļøāƒ£0ļøāƒ£ Solve the 0/1 Knapsack Problem
šŸ‘‰ Given items with weights and values, find the maximum value that can be placed in a bag with limited capacity.
def knapsack(weights, values, capacity):
dp = [0] * (capacity + 1)

for i in range(len(weights)):
for w in range(capacity, weights[i] - 1, -1):
dp[w] = max(
dp[w],
dp[w - weights[i]] + values[i]
)

return dp[capacity]

print(knapsack([1, 3, 4], [15, 50, 60], 4))

šŸ“Œ Output:
65

ā±ļø Time Complexity: O(n Ɨ capacity)
šŸ’¾ Space Complexity: O(capacity)
šŸ’¬ Save this for your advanced coding interview preparation!
šŸ”„ Next: Generative AI – Part 9
#Coding #DSA #Python #AdvancedCoding #Algorithms #DynamicProgramming #Graphs #InterviewQuestions
šŸ Python Course Roadmap

Want to learn Python from Beginner to Advanced? šŸš€

šŸ“Œ Complete Python roadmap
šŸ’» Topics to learn step-by-step
šŸ¤– AI & ML direction
šŸŽÆ Skills for real projects

šŸ“– Read the Full Roadmap šŸ‘‡
https://updategadh.com/python-course-roadmap/

šŸ”” @ProjectWithSourceCodes

#Python #PythonRoadmap #LearnPython #PythonProgramming #AI #MachineLearning #Coding #Programming #PythonCourse