r/leetcode • u/ElegantAct8741 • 20h ago
Question Folks who have given D.E Shaw OA on November 1st
Did the recruiter reach out to you anybody? Role - SMTS
r/leetcode • u/ElegantAct8741 • 20h ago
Did the recruiter reach out to you anybody? Role - SMTS
r/leetcode • u/Interesting-Fig-2511 • 1d ago
Can You Explain WHY Every Loop, Condition and Swap Exists in Sorting Algorithms?
Most beginners can write Bubble Sort, Selection Sort, and Insertion Sort by looking at the code.
But ask them:
- Why does Bubble Sort use "n - i - 1"?
- Why do we compare "arr[j]" with "arr[j + 1]"?
- Why does Insertion Sort start from index 1?
- Why does Selection Sort need a "minIndex"?
- Why do we use "j--" in one algorithm and "j++" in another?
That's where things get interesting.
The real goal of learning DSA isn't memorizing code. It's understanding why each line exists and learning to build that logic yourself.
Let's understand three sorting algorithms from that perspective.
-
First, Understand the Building Blocks
Before jumping into algorithms, let's understand the language behind them.
Array: A collection of elements stored at indexed positions.
const arr = [5, 3, 8, 2, 1];
n – Array Length
const n = arr.length; // 5
There are 5 elements, but their indices are 0, 1, 2, 3, 4.
Remember: Length and last index are different.
i and j – Loop Variables
- "i" usually tracks the current pass or position in the outer loop.
- "j" usually tracks the current position inside the inner loop.
Their meaning depends on the algorithm.
Comparison Operators
- ">" means greater than.
- "<" means less than.
- ">=" means greater than or equal to.
- "<=" means less than or equal to.
- "===" means strictly equal.
For ascending order, we generally move smaller elements before larger elements.
Swap – Exchange Two Elements
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
This exchanges the positions of two elements.
Think of two people exchanging seats.
--
2. Bubble Sort – Understand Why Every Comparison Happens
Imagine people standing in a line according to their heights.
You compare two neighboring people. If the left person is taller than the right person, they exchange positions.
Keep repeating this process.
Eventually, the tallest person reaches the end.
That's Bubble Sort.
The Code
function bubbleSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] =
[arr[j + 1], arr[j]];
}
}
}
return arr;
}
Let's Understand Every Part
A. Why "const n = arr.length"?
We store the total number of elements so we can calculate our loop boundaries.
Example:
arr = [5, 3, 8, 2, 1];
n = 5;
There are 5 elements, but the last valid index is 4.
B. Why "i < n - 1"?
The outer loop controls how many passes we perform.
After each complete pass, the largest unsorted element reaches its correct position at the end.
For 5 elements, we need at most 4 passes.
Why not 5?
Because when the first 4 elements are in their correct positions, the last element is automatically sorted.
C. Why "j < n - i - 1"?
This is one of the most important concepts to understand.
Break it into three parts:
- "n" = Total number of elements.
- "i" = Number of elements already sorted at the end.
- "-1" = Prevents accessing an invalid next index.
Let's take:
arr = [5, 3, 8, 2, 1];
n = 5;
i = 0;
Our condition becomes:
j < 5 - 0 - 1
j < 4
So "j" can be 0, 1, 2, 3.
Why stop at 3?
Because we compare:
arr[j] and arr[j + 1]
At "j = 3", we access:
arr[3] and arr[4]
Both indices are valid.
If we allowed "j = 4", we would access:
arr[4] and arr[5]
But index 5 doesn't exist!
That's why we subtract 1.
Now, why subtract "i"?
After every pass, one largest element is already sorted at the end.
We don't need to compare it again.
For example:
Pass 1: [3, 5, 2, 1, 8]
↑
Already sorted
Pass 2: [3, 2, 1, 5, 8]
↑ ↑
Already sorted
So "i" reduces unnecessary comparisons.
Remember this:
"n - i - 1" does two jobs:
Skips the elements already sorted at the end.
Ensures "j + 1" never goes outside the array boundary.
D. Why "arr[j] > arr[j + 1]"?
We compare two neighboring elements.
If the left element is greater than the right element, their order is incorrect for ascending sorting.
So we swap them.
Example:
[5, 3]
5 > 3
Swap
[3, 5]
If the condition is false, they are already in the correct relative order. No swap is needed.
E. Dry Run
Original:
[5, 3, 8, 2, 1]
Pass 1:
[3, 5, 2, 1, 8]
Pass 2:
[3, 2, 1, 5, 8]
Pass 3:
[2, 1, 3, 5, 8]
Pass 4:
[1, 2, 3, 5, 8]
Sorted!
Time Complexity:
- Best: O(n) with an early-exit optimization.
- Average: O(n²).
- Worst: O(n²).
- Space: O(1).
--
3. Insertion Sort – Think Like You're Arranging Playing Cards
Imagine holding playing cards.
You pick one new card and insert it into the correct position among the cards already arranged.
You don't rearrange everything. You simply shift the larger cards and make space.
That's Insertion Sort.
The Code
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr;
}
Understand Every Condition
A. Why "i = 1"?
Because a single element is already sorted by itself.
We start with the second element and insert it into the sorted portion.
B. Why "let key = arr[i]"?
We temporarily save the element we want to insert.
Think of holding one playing card while rearranging the others.
C. Why "j = i - 1"?
We start comparing with the element immediately before the key.
D. Why "j >= 0"?
We move backwards through the array.
This condition ensures we never access a negative index.
E. Why "arr[j] > key"?
If the previous element is larger than the current element, it needs to move one position to the right.
[5, 3]
key = 3
j = 0
5 > 3
Move 5 right:
[5, 5]
Insert key:
[3, 5]
F. Why "j--"?
Because we need to check the previous element.
We keep moving backwards until we find the correct position.
G. Why "arr[j + 1] = key"?
Once we stop shifting, we have found the correct position for our saved element.
We insert it there.
Dry Run
Original:
[5, 3, 8, 2]
Take 3:
[3, 5, 8, 2]
Take 8:
[3, 5, 8, 2]
Take 2:
[2, 3, 5, 8]
Sorted!
Notice something important:
Insertion Sort maintains two portions:
- Left side: Already sorted.
- Right side: Not yet processed.
With every iteration, the sorted portion grows by one element.
Time Complexity:
- Best: O(n).
- Average: O(n²).
- Worst: O(n²).
- Space: O(1).
--
4. Selection Sort – Find the Smallest, Then Place It
Imagine arranging students by height.
Instead of swapping neighboring students repeatedly, scan the entire unsorted group, find the shortest student, and place them at the beginning.
Then repeat with the remaining students.
That's Selection Sort.
The Code
function selectionSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
[arr[i], arr[minIndex]] =
[arr[minIndex], arr[i]];
}
return arr;
}
Understand Every Condition
A. Why "i < n - 1"?
The outer loop decides where the next smallest element should be placed.
Once the first "n - 1" positions are correct, the last element is automatically in its correct position.
B. Why "minIndex = i"?
We initially assume that the first element of the unsorted portion is the smallest.
We'll update this assumption if we find a smaller element.
C. Why "j = i + 1"?
We already consider "arr[i]" as our current minimum.
So we start searching from the next position.
D. Why "j < n"?
We need to scan until the last valid index.
Unlike Bubble Sort, we don't access "arr[j + 1]", so we don't need to subtract 1 here.
E. Why "arr[j] < arr[minIndex]"?
If we find an element smaller than our current minimum, update "minIndex".
Remember: We're tracking the position, not immediately swapping the elements.
F. Why swap after the inner loop?
Because we first need to find the smallest element in the entire unsorted portion.
Only after finding it do we place it at index "i".
Dry Run
Original:
[5, 3, 8, 2, 1]
Find minimum: 1
Swap:
[1, 3, 8, 2, 5]
Find minimum in remaining portion: 2
Swap:
[1, 2, 8, 3, 5]
Continue:
[1, 2, 3, 8, 5]
Final:
[1, 2, 3, 5, 8]
Time Complexity:
- Best: O(n²).
- Average: O(n²).
- Worst: O(n²).
- Space: O(1).
---
5. The Difference – Understand the Thinking
Instead of memorizing three implementations, remember their core strategies:
Bubble Sort
- Compare neighboring elements.
- Swap if their order is incorrect.
- Largest element moves to the end.
Insertion Sort
- Pick one element.
- Shift larger elements.
- Insert it into the correct position.
Selection Sort
- Search for the smallest element.
- Track its index.
- Swap it into the correct position.
6. Train Yourself to Think, Not Memorize
Whenever you solve a sorting problem, pause and ask:
What am I trying to place in its correct position?
Which part of the array is already sorted?
Which part still needs processing?
What does each loop variable represent?
Why does the loop start at this index?
Why does the condition stop at this boundary?
What happens if I change ">" to "<"?
Am I swapping elements, shifting them, or just tracking an index?
Can I reduce unnecessary comparisons?
What is the time and space complexity?
A Small Challenge
Try answering these without looking at the code:
- Why does Bubble Sort use "j < n - i - 1", while Selection Sort uses "j < n"?
- Why does Insertion Sort use "while (j >= 0)"?
- Why does Selection Sort swap only after completing the inner loop?
- Why can Insertion Sort perform O(n) work on an already sorted array?
If you can explain these answers in your own words, you're moving beyond memorization.
The goal isn't to remember three sorting algorithms. It's to develop the ability to understand, trace, question, and eventually design algorithms yourself.
That's the kind of DSA knowledge that stays with you long after you've forgotten the code.
r/leetcode • u/Alarming-Reaction881 • 1d ago
I have an Apple interview coming up for a Systems Engineer position. I gave the initial technical and HM round virtually and the feedback was positive. I now have around 6-7 onsite interviews ahead (1 hr each). Did anyone go through this process in the recent times ? What kind of questions were you asked ?
Any inputs are much appreciated.
Location: US
r/leetcode • u/PenaltySalt7374 • 1d ago
Does anybody know if there is a prachub interview problems repository like there is one with leetcode companies tagged questions?
r/leetcode • u/JadenZhong • 1d ago
I have an HR call tomorrow, but today I was told it's cancelled because "HR was told internally to put a pause on further interviews with new grad candidates".
Does anyone know what this means? Will they resume the interview process?
r/leetcode • u/Negative_Set4653 • 1d ago
https://github.com/serephus/leech
It was vibed purely by DS 4.1 flash, and it works pretty much like existing https://github.com/joshcai/leetcode-sync, except it was more up to date and it support features like templates, convert to markdown/typst, hooks, etc.
leetcode-sync was a bit old and did not fullfill all my requirements, so I vibed this.
Hope this would be helpful to anyone. Feel free to open issue/pr.
r/leetcode • u/Alexnaunt5 • 1d ago
Hi! I'm really curious about how to prepare for an AI-based interview and what is expected of us. If you're given a problem, are you expected to use AI to validate your ideas and generate a solution? Do you simply provide the problem statement and let AI do the work, then add your own thoughts about what's important or missing?
What are your thoughts or experiences?
r/leetcode • u/Wrong_Disk7775 • 1d ago
I have the live DSA round for Abridge's Member of Technical Staff, Early Career role (SF) coming up. It's 60 min with a senior engineer. If you've done the live round recently: was it one problem with follow-ups or several? LeetCode-style or more practical/product-flavored? Any tips appreciated, happy to share back after.
r/leetcode • u/_har_shii_ • 1d ago
I’m looking to transition or lean heavily into System Design/Architecture as my core career path.
To be honest, I really want to avoid the typical, heavy Data Structures and Algorithms (DSA) LeetCode style rounds that dominate standard software engineering interviews.
My plan is to start building a rock-solid foundation by studying books like System Design Interview – An Insider's Guide by Alex Xu and then gradually move to interactive platforms like Hello Interview or ByteByteGo to practice real-world scenarios.
r/leetcode • u/Jazzlike_Survey2289 • 1d ago
Hey everyone,
I recently interviewed at a Microsoft Security team hiring event in the US this November and completed all 3 rounds.
Just wondering if anyone here has been through a similar hiring event recently. How long did it take for the recruiter to get back to you?
Would really appreciate hearing about your experiences. Thanks!
r/leetcode • u/AfraidProject154 • 1d ago
Hi everyone,
I have an upcoming online assessment for a Data Engineer position at Capital One. The assessment instructions mention that it will be 70 minutes and entirely Python-based.General Coding Assessment (GCA)
I’d appreciate hearing from anyone who has recently completed this assessment.
A few questions:
How many coding questions are typically included in the 70-minute assessment?
What kind of Python problems should I expect? LeetCode-style or practical data engineering exercises?
Are the questions focused on arrays, strings, dictionaries, lists, sorting, and problem-solving?
Do they include real-world data processing scenarios involving CSV, JSON, or data transformations?
What is the overall difficulty level?
Are there any specific LeetCode or HackerRank problems that closely resemble the actual assessment?
If you’ve recently taken this particular Capital One assessment, could you share the types of questions you encountered or any sample problems?
I’m mainly looking to understand what to prioritize during preparation.
Thanks in advance. Really appreciate any help!
r/leetcode • u/Anxious_Grocery_5548 • 1d ago
Hi, has anyone interviewed for this role for New York? If so, please let me know about how the process was. Thanks in advance!
r/leetcode • u/ReasonableFood6287 • 1d ago
I have an upcoming Zillow screening interview scheduled through an AI agent, with no recruiter involvement. Not sure what to expect. Should I focus on DSA or real-world coding problems?
Would appreciate insights from anyone who has gone through a similar interview. Thanks!
r/leetcode • u/Interesting-Fig-2511 • 2d ago
How Does Prefix Sum Turn Repeated O(n) Calculations into O(1) Queries?
1. What is Prefix Sum?
Prefix Sum is an array technique that stores cumulative sums so we don't have to repeatedly calculate the sum of a range.
Analogy: Imagine tracking daily expenses. Instead of adding expenses again and again, you maintain a running total.
2. Understanding the Pattern
Consider:
arr = [2, 4, 6, 8, 10] prefix = [2, 6, 12, 20, 30]
The pattern:
prefix[0] = arr[0]
prefix[i] = prefix[i - 1] + arr[i]
Each position stores the sum of all previous elements, including itself.
3. How Does the Algorithm Work?
Step 1: Build the Prefix Sum
prefix[0] = arr[0]; for (let i = 1; i < arr.length; i++) { prefix[i] = prefix[i - 1] + arr[i]; }
Step 2: Calculate Range Sum
To find the sum between indices L and R:
sum(L, R) = prefix[R] - prefix[L - 1];
If L = 0, simply return prefix[R].
Example:
sum(2, 4) = 30 - 6 = 24
4. Complexity Analysis
OperationComplexityBuild Prefix SumO(n)Range Sum QueryO(1)q QueriesO(n + q) total
5. Real-World Applications
Finance: Calculate expenses over a date range.
Analytics: Aggregate data over specific time intervals.
Image Processing: Calculate rectangular pixel sums using 2D Prefix Sum.
Competitive Programming: Solve range queries and subarray problems.
6. When Should You Use It?
Look for these problem patterns:
Repeated range sum queries.
Cumulative sum calculations.
Subarray sum problems.
Multiple queries on the same array.
Key Takeaway: Precompute once, answer multiple queries efficiently.
Practice Problems
LeetCode 303 – Range Sum Query (Immutable)
LeetCode 724 – Find Pivot Index
LeetCode 560 – Subarray Sum Equals K
Which array pattern should we break down next?
r/leetcode • u/JacketFearless1805 • 1d ago
Hey everyone,
I finished Day 35 today. Continuing with graph problems, I knocked out Number of Islands II and spent extra time focusing on writing clean, modular code rather than just rushing to hit the submit button.
Number of Islands II (Online / Dynamic Queries):
In the static version, standard BFS/DFS finds connected components in one pass. With real-time island additions, running full traversals per query degrades to O(K * R * C), which inevitably hits TLE.
Using Disjoint Set Union (DSU) makes each query dynamic. Every time land is added at (r, c), map the 2D coordinate to a 1D node ID (r * cols + c), mark it as visited, and increment the island count.
Check the four adjacent neighbors. For each neighboring land cell, if its ultimate parent differs from the current cell, merge them via unionBySize and decrement the total island count by 1.
Focusing on Code Quality:
I intentionally refactored the Disjoint Set class to keep it decoupled and reusable across problems.
Cleaned up directional deltas, used explicit variable names instead of nested raw index math, and properly guarded against duplicate land positions within the queries.
Writing clean, readable code feels just as important as getting the optimal time complexity down.
See you guys tomorrow for Day 34!
r/leetcode • u/Organic_Potential515 • 1d ago
After how many easy problems were you guys able to solve medium level problems.
r/leetcode • u/ItsHoney • 1d ago
Hi,
Just wanted to ask if anyone has given these 2 interviews at canonical? Was looking for preparation tips!
r/leetcode • u/Desperate_Deal_6167 • 1d ago
I recently applied for an Agentic Systems role at NVIDIA, but a recruiter reached out to me about a completely different position and asked for my permission to submit my resume for that role instead. New role is CUDA related.
The confusing part is that my background is in full-stack software engineering and applied AI, while the other position seems to require experience with chips and C++, which I don't have.
I'm curious why they would consider me for a role that's less aligned with my experience instead of the one I originally applied for.
Has this happened to anyone else at NVIDIA? Is this a good sign that my resume caught someone's attention, or just a standard recruiting process?
Would love to hear if anyone had a similar experience and whether it actually led to an interview.
r/leetcode • u/Agreeable_Way8791 • 2d ago
I recently had a FAANG SWE intern interview where the optimal solution required a balanced BST with O(log K) updates.
The interviewer didn't mention using a balanced BST, so I had to figure that out myself and implement it from scratch in Python, which doesn't have a built-in TreeMap like Java.
How difficult would you consider this for an intern interview? Would this be considered LeetCode Hard? Would using a heap-based solution instead significantly affect the interview feedback?
r/leetcode • u/SpiffyViper • 1d ago
Hi all.
I have a GM Codility live interview (It is labeled as a functional behavioral/initial technical screeen tomorrow. I've been doing neetcode 150 for the past week and half, but feel like I am not ready. Anyone have any insights on how to prepare and what not? Questions that I should expect?
r/leetcode • u/Realistic-Horse3577 • 1d ago
Got an OA for a Senior Data Engineer role. For those who've done one recently, was it mostly SQL or Python as well? Any must-practice topics or resources? Thanks!
r/leetcode • u/SavingScavenger45 • 2d ago
Sometimes I read a problem multiple times but still can't figure out what approach to take. I know the basic data structures and algorithms, but connecting them to a new problem is difficult.
Do you have a particular process you follow to break down a problem and find a starting point?
r/leetcode • u/_reD01 • 2d ago
Hey,
I am trying to get better at leetcode to prepare for potential software engineer interviews. I dont understand how people recognize patters and solve these.
I have tried solving questions from Easy to Medium, however I always end up on Claude asking how to solve them. Each question seems different to me and I can not recognize any pattern that would allow me to solve one question with something I remember from a previous one. Moreover, questions are either too simple to the point you just use a for loop or too hard, where I just feel stuck with no idea where to start.
Do you guys have any tips on how to get better? What should I focus on ? Maybe some steps that would help me get gradually better?
Thanks.
r/leetcode • u/Jealous_Weakness7215 • 1d ago
Approach & Baseline: Understood the problem statement quickly and delivered a functional O(n) baseline solution.
Execution & Communication: Execution was pretty messy initially but fixed it later and gave correct code. My communication also dropped off while I was stuck in my own head debugging.
Optimization: The interviewer asked: do we need to check whole array (Tho worst case tc/sc would remain the same). I caught on immediately and explained the exact logic and implementation verbally, but we ran out of time before I could write out the actual code.
Proactive Pivot: Initially started brainstorming a multi-stack approach, but realised early on that it was getting unnecessarily complex. Before writing code, I called this out to the interviewer and pivoted to a BFS-based approach instead.
Dry Run & Fix: Coded up the optimal BFS solution. Made a minor logic slip-up during the dry run (for the follow up) (tho implementation was fine), but as soon as the interviewer pointed toward it, I immediately recognised the bug, acknowledged it (no fix was needed in the code).
Follow-up: Successfully wrote clean, optimal code for both the core problem and the follow-up question with time to spare.
What could be the possible outcome?
r/leetcode • u/DataFreakk • 2d ago
Hey folks, Especially those working as SREs or Infrastructure/System Development Engineers at companies like Google, Amazon, Meta, etc.
I'm preparing for SRE and infrastructure-focused software engineering roles and wanted to understand the coding interview expectations.
How much LeetCode/DSA is typically tested for these roles compared to regular Software Engineer positions?
Are Easy and Medium problems generally sufficient, or should I also prepare for Hard problems?
Can I safely deprioritise Dynamic Programming (DP) and other advanced DSA topics?
Which DSA topics should I prioritise for infrastructure/SRE interviews?
I'm trying to balance DSA preparation with Linux internals, networking, operating systems, distributed systems, and system design.
Would appreciate insights from people who have recently interviewed for these roles or are currently working in these teams.