Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: public class TreeNode { public int val; public TreeNode left, right; public TreeNode(int x) { val = x; } } TreeNode prev = null; TreeNode head = null; TreeNode ConvertToDLL(TreeNode root) { if (root == null…
Short answer: public class MyQueue { private Stack<int> stackIn = new Stack<int>(); private Stack<int> stackOut = new Stack<int>(); // Enqueue: push into stackIn (O(1)) public void Enqueue(int x)…
Short answer: begins public class ListNode { Example code public int val; public ListNode next; public ListNode(int x) { val = x; next = null; } } ListNode DetectCycle(ListNode head) { if (head == null) return null; List…
Short answer: int MergeSortAndCount(int[] arr, int[] temp, int left, int right) { int invCount = 0; if (right > left) { int mid = (right + left) / 2; invCount += MergeSortAndCount(arr, temp, left, mid); invCount += Me…
Short answer: Algorithm int GCD(int a, int b) { Follow on: while (b != 0) { Example code int temp = b; b = a % b; a = temp; } return a; } Explanation: Repeatedly replace (a, b) with (b, a mod b) until b is 0; then a is t…
Short answer: void QuickSort(int[] arr, int low, int high) { Example code if (low < high) Follow on: { int pi = Partition(arr, low, high); QuickSort(arr, low, pi - 1); QuickSort(arr, pi + 1, high); } } int Partition(i…
Short answer: int Fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1; for (int i = 2; i <= n; i++) { int temp = a + b; a = b; b = temp; } return b; } Explanation: Iterative DP approach; each Fibonacci number…
Short answer: lternative using Brian Kernighan’s algorithm: public int CountSetBits(int n) { int count = 0; while (n != 0) { n &amp;= (n - 1); // Drops the lowest set bit count++; } return count; } Follow on: lternat…
Short answer: rray.Copy(arr, left, L, 0, n1); rray.Copy(arr, mid + 1, R, 0, n2); int i = 0, j = 0, k = left; while (i < n1 && j < n2) rr[k++] = (L[i] <= R[j]) ? L[i++] : R[j++]; while (i < n1) arr[k++…
Short answer: public int CountOnes(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops the lowest set bit count++; } return count; } Explanation: Brian Kernighan’s algorithm efficiently removes the lowest…
Short answer: public string LongestCommonPrefix(string[] strs) { if (strs == null || strs.Length == 0) return ""; for (int i = 0; i < strs[0].Length; i++) { char c = strs[0][i]; for (int j = 1; j < strs.L…
Short answer: public int[] SortNearlySorted(int[] nums, int k) { var result = new List<int>(); var minHeap = new SortedSet<(int val, int index)>(); for (int i = 0; i < nums.Length; i++) { minHeap.Add((nums…
Short answer: int ClimbStairs(int n) { if (n <= 2) return n; int a = 1, b = 2; for (int i = 3; i <= n; i++) { int c = a + b; a = b; b = c; } return b; } Example code int ClimbStairs(int n) { if (n <= 2) return n…
Short answer: int CountConnectedComponents(Dictionary<int, List<int>> graph) { var visited = new HashSet<int>(); int count = 0; Follow on: foreach (var node in graph.Keys) { if (!visited.Contains(node))…
Short answer: void VerticalSum(TreeNode root, int hd, Dictionary<int, int> map) { if (root == null) return; VerticalSum(root.left, hd - 1, map); if (map.ContainsKey(hd)) map[hd] += root.val; else map[hd] = root.val…
Short answer: public int EvaluateInfix(string expression) { Stack<int> operands = new Stack<int>(); Stack<char> operators = new Stack<char>(); int i = 0; while (i < expression.Length) { if (cha…
Short answer: ListNode ReverseBetween(ListNode head, int m, int n) { Example code if (head == null || m == n) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode prev = dummy; // Move prev to one b…
Short answer: string LongestPalindrome(string s) { if (string.IsNullOrEmpty(s)) return ""; int start = 0, maxLen = 1; for (int i = 0; i < s.Length; i++) { ExpandAroundCenter(s, i, i, ref start, ref maxLen);…
Short answer: int LCM(int a, int b) { return a / GCD(a, b) * b; } Explanation: LCM × GCD = product of the two numbers. Example code int LCM(int a, int b) { return a / GCD(a, b) * b; } Explanation: LCM × GCD = product of…
Short answer: void MergeSort(int[] arr, int left, int right) { Example code if (left < right) { int mid = (left + right) / 2; MergeSort(arr, left, mid); MergeSort(arr, mid + 1, right); Follow on: Merge(arr, left, mid,…
Short answer: int Knapsack(int[] weights, int[] values, int W) { int n = weights.Length; int[,] dp = new int[n + 1, W + 1]; for (int i = 1; i <= n; i++) { for (int w = 1; w <= W; w++) { if (weights[i - 1] <= w)…
Short answer: Logic Convert to char array. Swap characters from both ends. string str = "dotnet"; char[] chars = str.ToCharArray(); int left = 0, right = chars.Length - 1; while (left < right) { char temp =…
Short answer: public double Power(double x, int n) { if (n == 0) return 1; double half = Power(x, n / 2); if (n % 2 == 0) return half * half; else return n > 0 ? x * half * half : (half * half) / x; } Explanation: Use…
Short answer: t j return IsMatchHelper(s, p, i, j + 2) || (firstMatch && IsMatchHelper(s, p, i + 1, j)); } else { return firstMatch && IsMatchHelper(s, p, i + 1, j + 1); } Follow on: } Explanation: Recurs…
Short answer: public bool HaveOppositeSigns(int x, int y) { return (x ^ y) < 0; } Explanation: XOR of two numbers with opposite signs has the sign bit set (negative number). Example code public bool HaveOppositeSigns(…
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public class TreeNode { public int val; public TreeNode left, right; public TreeNode(int x) { val = x; } } TreeNode prev = null; TreeNode head = null; TreeNode ConvertToDLL(TreeNode root) { if (root == null) return null; ConvertToDLL(root.left); if (prev == null) { head = root; // first node becomes head } else { root.left = prev; Follow on: prev.right = root; } prev = root; ConvertToDLL(root.right); return head; }…
Explanation: Inorder traversal connects nodes as doubly linked list by linking current with previous node.
public class TreeNode {
public int val;
public TreeNode left, right;
public TreeNode(int x) { val = x; }
}
TreeNode prev = null;
TreeNode head = null; TreeNode ConvertToDLL(TreeNode root) { if (root == null) return null; ConvertToDLL(root.left); if (prev == null) {
head = root; // first node becomes head } else { root.left = prev; Follow on: prev.right = root;
}
prev = root; ConvertToDLL(root.right); return head;
} Explanation: Inorder traversal connects nodes as doubly linked list by linking current with previous node.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public class MyQueue { private Stack<int> stackIn = new Stack<int>(); private Stack<int> stackOut = new Stack<int>(); // Enqueue: push into stackIn (O(1)) public void Enqueue(int x) { stackIn.Push(x); } // Dequeue: if stackOut empty, pour all from stackIn to stackOut, then pop (amortized O(1)) public int Dequeue() { if (stackOut.Count == 0) { while (stackIn.Count > 0) { stackOut.Push(stackIn.Pop()); } } return…
stackOut.Pop(); } public int Peek() { if (stackOut.Count == 0) { while (stackIn.Count > 0) { stackOut.Push(stackIn.Pop()); } } return stackOut.Peek(); } public bool IsEmpty() { return stackIn.Count == 0 && stackOut.Count == 0; } } Follow on: Explanation: Two stacks are used: stackIn for enqueue, stackOut for dequeue. Elements are transferred only when needed, making both operations amortized O(1).
public class MyQueue {
private Stack<int> stackIn = new Stack<int>();
private Stack<int> stackOut = new Stack<int>(); // Enqueue: push into stackIn (O(1)) public void Enqueue(int x) { stackIn.Push(x); } // Dequeue: if stackOut empty, pour all from stackIn to stackOut, then pop (amortized O(1)) public int Dequeue() {
if (stackOut.Count == 0) { while (stackIn.Count > 0) { stackOut.Push(stackIn.Pop()); }
}
return stackOut.Pop();
}
public int Peek() {
if (stackOut.Count == 0) { while (stackIn.Count > 0) { stackOut.Push(stackIn.Pop()); }
}
return stackOut.Peek();
}
public bool IsEmpty() {
return stackIn.Count == 0 && stackOut.Count == 0;
}
} Follow on: Explanation: Two stacks are used: stackIn for enqueue, stackOut for dequeue. Elements are transferred only when needed, making both operations amortized O(1).
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: begins public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) { val = x; next = null; }
}
ListNode DetectCycle(ListNode head) {
if (head == null) return null;
ListNode slow = head, fast = head; Follow on: // Detect cycle using Floyd's Tortoise and Hare while (fast != null && fast.next != null) { slow = slow.next;
fast = fast.next.next;
if (slow == fast) { // cycle detected
ListNode ptr = head; while (ptr != slow) { ptr = ptr.next;
slow = slow.next;
}
return ptr; // start node of cycle
}
}
return null; // no cycle
} Explanation: First detect cycle meeting point with two pointers. Then find start node by moving one pointer from head and one from meeting point until they meet.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int MergeSortAndCount(int[] arr, int[] temp, int left, int right) { int invCount = 0; if (right > left) { int mid = (right + left) / 2; invCount += MergeSortAndCount(arr, temp, left, mid); invCount += MergeSortAndCount(arr, temp, mid + 1, right); invCount += Merge(arr, temp, left, mid + 1, right); } return invCount; } int Merge(int[] arr, int[] temp, int left, int mid, int right) { int i = left, j = mid, k = left;…
int invCount = 0; while (i <= mid - 1 && j <= right) { if (arr[i] <= arr[j]) temp[k++] = arr[i++]; else { temp[k++] = arr[j++]; invCount += (mid - i); // Count inversions } } while (i <= mid - 1) temp[k++] = arr[i++]; Follow on: while (j <= right) temp[k++] = arr[j++]; for (int idx = left; idx <= right; idx++) arr[idx] = temp[idx]; return invCount; } Explanation: Using a modified merge sort to count pairs where arr[i] > arr[j] for i < j efficiently.
int MergeSortAndCount(int[] arr, int[] temp, int left, int right)
{
int invCount = 0;
if (right > left)
{
int mid = (right + left) / 2;
invCount += MergeSortAndCount(arr, temp, left, mid);
invCount += MergeSortAndCount(arr, temp, mid + 1, right);
invCount += Merge(arr, temp, left, mid + 1, right);
}
return invCount;
}
int Merge(int[] arr, int[] temp, int left, int mid, int right)
{
int i = left, j = mid, k = left;
int invCount = 0; while (i <= mid - 1 && j <= right) {
if (arr[i] <= arr[j])
temp[k++] = arr[i++]; else {
temp[k++] = arr[j++];
invCount += (mid - i); // Count inversions
}
} while (i <= mid - 1) temp[k++] = arr[i++]; Follow on: while (j <= right) temp[k++] = arr[j++];
for (int idx = left; idx <= right; idx++)
arr[idx] = temp[idx];
return invCount;
} Explanation: Using a modified merge sort to count pairs where arr[i] > arr[j] for i < j efficiently.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: Algorithm int GCD(int a, int b) { Follow on: while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
} Explanation: Repeatedly replace (a, b) with (b, a mod b) until b is 0; then a is the GCD.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: void QuickSort(int[] arr, int low, int high) {
if (low < high) Follow on: {
int pi = Partition(arr, low, high); QuickSort(arr, low, pi - 1); QuickSort(arr, pi + 1, high); }
}
int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++)
{
if (arr[j] < pivot)
{ i++; (arr[i], arr[j]) = (arr[j], arr[i]);
}
}
(arr[i + 1], arr[high]) = (arr[high], arr[i + 1]);
return i + 1;
} Explanation: Choose last element as pivot, partition array so left < pivot < right, recursively sort subarrays.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int Fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1; for (int i = 2; i <= n; i++) { int temp = a + b; a = b; b = temp; } return b; } Explanation: Iterative DP approach; each Fibonacci number is sum of two previous. Follow on:
int Fibonacci(int n)
{
if (n <= 1) return n;
int a = 0, b = 1;
for (int i = 2; i <= n; i++)
{
int temp = a + b;
a = b;
b = temp;
}
return b;
} Explanation: Iterative DP approach; each Fibonacci number is sum of two previous. Follow on:
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: lternative using Brian Kernighan’s algorithm: public int CountSetBits(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops the lowest set bit count++; } return count; } Follow on: lternative using Brian Kernighan’s algorithm: public int CountSetBits(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops… the lowest set bit…… lternative using Brian Kernighan’s algorithm: public int…
CountSetBits(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops the lowest set bit count++; } return count; } Follow on: lternative using Brian Kernighan’s algorithm: public int CountSetBits(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops… the lowest set bit count++; } return count; } Follow on:
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: rray.Copy(arr, left, L, 0, n1); rray.Copy(arr, mid + 1, R, 0, n2); int i = 0, j = 0, k = left; while (i < n1 && j < n2) rr[k++] = (L[i] <= R[j]) ? L[i++] : R[j++]; while (i < n1) arr[k++] = L[i++]; while (j < n2) arr[k++] = R[j++]; } Explanation: Divide array, sort left & right halves, then merge sorted halves. while (i < n1) arr[k++] = L[i++];
while (j < n2) arr[k++] = R[j++];
} Explanation: Divide array, sort left & right halves, then merge sorted halves.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public int CountOnes(int n) { int count = 0; while (n != 0) { n &= (n - 1); // Drops the lowest set bit count++; } return count; } Explanation: Brian Kernighan’s algorithm efficiently removes the lowest set bit each iteration until zero.
public int CountOnes(int n) {
int count = 0; while (n != 0) { n &= (n - 1); // Drops the lowest set bit count++; }
return count;
} Explanation: Brian Kernighan’s algorithm efficiently removes the lowest set bit each iteration until zero.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public string LongestCommonPrefix(string[] strs) { if (strs == null || strs.Length == 0) return ""; for (int i = 0; i < strs[0].Length; i++) { char c = strs[0][i]; for (int j = 1; j < strs.Length; j++) { if (i == strs[j].Length || strs[j][i] != c) return strs[0].Substring(0, i); } } return strs[0]; } Follow on: Explanation: Check character by character across all strings until mismatch.
public string LongestCommonPrefix(string[] strs) {
if (strs == null || strs.Length == 0) return "";
for (int i = 0; i < strs[0].Length; i++) {
char c = strs[0][i];
for (int j = 1; j < strs.Length; j++) {
if (i == strs[j].Length || strs[j][i] != c)
return strs[0].Substring(0, i);
}
}
return strs[0];
} Follow on: Explanation: Check character by character across all strings until mismatch.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public int[] SortNearlySorted(int[] nums, int k) { var result = new List<int>(); var minHeap = new SortedSet<(int val, int index)>(); for (int i = 0; i < nums.Length; i++) { minHeap.Add((nums[i], i)); if (minHeap.Count > k) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); } } while (minHeap.Count > 0) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); } return result.ToArray(); }…
Explanation: Use a min-heap of size k+1 to always extract the smallest element in the current window.
public int[] SortNearlySorted(int[] nums, int k) {
var result = new List<int>();
var minHeap = new SortedSet<(int val, int index)>();
for (int i = 0; i < nums.Length; i++) { minHeap.Add((nums[i], i)); if (minHeap.Count > k) {
var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); }
} while (minHeap.Count > 0) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); }
return result.ToArray();
} Explanation: Use a min-heap of size k+1 to always extract the smallest element in the current window.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int ClimbStairs(int n) { if (n <= 2) return n; int a = 1, b = 2; for (int i = 3; i <= n; i++) { int c = a + b; a = b; b = c; } return b; }
int ClimbStairs(int n) {
if (n <= 2) return n;
int a = 1, b = 2;
for (int i = 3; i <= n; i++) {
int c = a + b;
a = b;
b = c;
}
return b;
}
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int CountConnectedComponents(Dictionary<int, List<int>> graph) { var visited = new HashSet<int>(); int count = 0; Follow on: foreach (var node in graph.Keys) { if (!visited.Contains(node)) { DFS(node, graph, visited); count++; } } return count; } void DFS(int node, Dictionary<int, List<int>> graph, HashSet<int> visited) { visited.Add(node); foreach (var neighbor in graph[node]) { if (!visited.Contains(neighbor)) {…
DFS(neighbor, graph, visited); } } } Explanation: Run DFS on unvisited nodes, count how many times DFS starts.
int CountConnectedComponents(Dictionary<int, List<int>> graph) {
var visited = new HashSet<int>();
int count = 0; Follow on: foreach (var node in graph.Keys) {
if (!visited.Contains(node)) { DFS(node, graph, visited); count++; }
}
return count;
} void DFS(int node, Dictionary<int, List<int>> graph, HashSet<int> visited) { visited.Add(node); foreach (var neighbor in graph[node]) {
if (!visited.Contains(neighbor)) { DFS(neighbor, graph, visited); }
}
} Explanation: Run DFS on unvisited nodes, count how many times DFS starts.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: void VerticalSum(TreeNode root, int hd, Dictionary<int, int> map) { if (root == null) return; VerticalSum(root.left, hd - 1, map); if (map.ContainsKey(hd)) map[hd] += root.val; else map[hd] = root.val; VerticalSum(root.right, hd + 1, map); } Dictionary<int, int> GetVerticalSum(TreeNode root) { var map = new Dictionary<int, int>(); VerticalSum(root, 0, map); return map; } Explanation: Use horizontal distance (hd)…
from root; sum values of nodes at each hd. Follow on:
void VerticalSum(TreeNode root, int hd, Dictionary<int, int> map) { if (root == null) return; VerticalSum(root.left, hd - 1, map); if (map.ContainsKey(hd))
map[hd] += root.val; else map[hd] = root.val; VerticalSum(root.right, hd + 1, map); }
Dictionary<int, int> GetVerticalSum(TreeNode root) {
var map = new Dictionary<int, int>(); VerticalSum(root, 0, map); return map;
} Explanation: Use horizontal distance (hd) from root; sum values of nodes at each hd. Follow on:
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public int EvaluateInfix(string expression) { Stack<int> operands = new Stack<int>(); Stack<char> operators = new Stack<char>(); int i = 0; while (i < expression.Length) { if (char.IsWhiteSpace(expression[i])) { i++; continue; } if (char.IsDigit(expression[i])) { int val = 0; while (i < expression.Length && char.IsDigit(expression[i])) { val = val * 10 + (expression[i] - '0'); i++; } operands.Push(val); continue; }…
if (expression[i] == '(') { operators.Push(expression[i]); } else if (expression[i] == ')') { while (operators.Peek() != '(') { ApplyOp(operands, operators); } operators.Pop(); // remove '(' Follow on: } else if (IsOperator(expression[i])) { while (operators.Count > 0 && Precedence(operators.Peek()) >= Precedence(expression[i])) { ApplyOp(operands, operators); } operators.Push(expression[i]); } i++; } while (operators.Count > 0) { ApplyOp(operands, operators); } return operands.Pop(); } bool IsOperator(char c) { return c == '+' || c == '-' || c == '*' || c == '/'; } int Precedence(char op) { if (op == '+' || op == '-') return 1; if (op == '*' || op == '/') return 2; return 0; } void ApplyOp(Stack<int> operands, Stack<char> operators) { int b = operands.Pop(); int a = operands.Pop(); char op = operators.Pop(); int result = 0; switch (op) { case '+': result = a + b; break; case '-':…
public int EvaluateInfix(string expression) {
Stack<int> operands = new Stack<int>();
Stack<char> operators = new Stack<char>();
int i = 0; while (i < expression.Length) { if (char.IsWhiteSpace(expression[i])) { i++; continue; }
if (char.IsDigit(expression[i])) {
int val = 0; while (i < expression.Length && char.IsDigit(expression[i])) { val = val * 10 + (expression[i] - '0'); i++; } operands.Push(val); continue; }
if (expression[i] == '(') { operators.Push(expression[i]); } else if (expression[i] == ')') { while (operators.Peek() != '(') { ApplyOp(operands, operators); } operators.Pop(); // remove '(' Follow on: } else if (IsOperator(expression[i])) { while (operators.Count > 0 && Precedence(operators.Peek()) >= Precedence(expression[i])) { ApplyOp(operands, operators); } operators.Push(expression[i]); } i++; } while (operators.Count > 0) { ApplyOp(operands, operators); }
return operands.Pop();
} bool IsOperator(char c) { return c == '+' || c == '-' || c == '*' || c == '/';
}
int Precedence(char op) {
if (op == '+' || op == '-') return 1;
if (op == '*' || op == '/') return 2;
return 0;
} void ApplyOp(Stack<int> operands, Stack<char> operators) { int b = operands.Pop();
int a = operands.Pop();
char op = operators.Pop();
int result = 0; switch (op) { case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break; Follow on: case '/': result = a / b; break;
} operands.Push(result); } Explanation: Standard two-stack algorithm for evaluating infix expressions considering operator precedence and parentheses.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: ListNode ReverseBetween(ListNode head, int m, int n) {
if (head == null || m == n) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy; // Move prev to one before m-th node for (int i = 1; i < m; i++) prev = prev.next;
ListNode start = prev.next;
ListNode then = start.next; // Reverse the sublist for (int i = 0; i < n - m; i++) { Follow on: start.next = then.next;
then.next = prev.next;
prev.next = then;
then = start.next;
}
return dummy.next;
} Explanation: Use a dummy node to simplify edge cases. Reverse nodes between m and n by changing pointers.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: string LongestPalindrome(string s) { if (string.IsNullOrEmpty(s)) return ""; int start = 0, maxLen = 1; for (int i = 0; i < s.Length; i++) { ExpandAroundCenter(s, i, i, ref start, ref maxLen); // Odd length palindrome ExpandAroundCenter(s, i, i + 1, ref start, ref maxLen); // Even length palindrome } return s.Substring(start, maxLen); } void ExpandAroundCenter(string s, int left, int right, ref int start, ref int…
maxLen) { while (left >= 0 && right < s.Length && s[left] == s[right]) { if (right - left + 1 > maxLen) Follow on: { start = left; maxLen = right - left + 1; } left--; right++; } } Explanation: Expand around each center to find the longest palindrome in O(n²).
string LongestPalindrome(string s)
{
if (string.IsNullOrEmpty(s)) return "";
int start = 0, maxLen = 1;
for (int i = 0; i < s.Length; i++)
{ ExpandAroundCenter(s, i, i, ref start, ref maxLen); // Odd length palindrome ExpandAroundCenter(s, i, i + 1, ref start, ref maxLen); // Even length palindrome }
return s.Substring(start, maxLen);
} void ExpandAroundCenter(string s, int left, int right, ref int start, ref int maxLen) { while (left >= 0 && right < s.Length && s[left] == s[right]) {
if (right - left + 1 > maxLen) Follow on: {
start = left;
maxLen = right - left + 1;
} left--; right++; }
} Explanation: Expand around each center to find the longest palindrome in O(n²).
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int LCM(int a, int b) { return a / GCD(a, b) * b; } Explanation: LCM × GCD = product of the two numbers.
int LCM(int a, int b)
{
return a / GCD(a, b) * b;
} Explanation: LCM × GCD = product of the two numbers.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: void MergeSort(int[] arr, int left, int right) {
if (left < right)
{
int mid = (left + right) / 2; MergeSort(arr, left, mid); MergeSort(arr, mid + 1, right); Follow on: Merge(arr, left, mid, right); }
} void Merge(int[] arr, int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
int[] L = new int[n1];
int[] R = new int[n2]; Array.Copy(arr, left, L, 0, n1); Array.Copy(arr, mid + 1, R, 0, n2); int i = 0, j = 0, k = left; while (i < n1 && j < n2) arr[k++] = (L[i] <= R[j]) ? L[i++] : R[j++];
while (i < n1) arr[k++] = L[i++];
while (j < n2) arr[k++] = R[j++];
} Explanation: Divide array, sort left & right halves, then merge sorted halves.
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: int Knapsack(int[] weights, int[] values, int W) { int n = weights.Length; int[,] dp = new int[n + 1, W + 1]; for (int i = 1; i <= n; i++) { for (int w = 1; w <= W; w++) { if (weights[i - 1] <= w) dp[i, w] = Math.Max(dp[i - 1, w], values[i - 1] + dp[i - 1, w - weights[i - 1]]); else dp[i, w] = dp[i - 1, w]; } } return dp[n, W]; } Explanation: Build table where dp[i,w] = max value using first i items and capacity w.
int Knapsack(int[] weights, int[] values, int W)
{
int n = weights.Length;
int[,] dp = new int[n + 1, W + 1];
for (int i = 1; i <= n; i++)
{
for (int w = 1; w <= W; w++)
{
if (weights[i - 1] <= w) dp[i, w] = Math.Max(dp[i - 1, w], values[i - 1] + dp[i - 1, w - weights[i - 1]]); else dp[i, w] = dp[i - 1, w];
}
}
return dp[n, W];
} Explanation: Build table where dp[i,w] = max value using first i items and capacity w. Follow on:
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding Scenarios
Short answer: Logic Convert to char array. Swap characters from both ends. string str = "dotnet"; char[] chars = str.ToCharArray(); int left = 0, right = chars.Length - 1; while (left < right) { char temp = chars[left]; chars[left] = chars[right]; chars[right] = temp; left++; right--; } string reversed = new string(chars);
Logic Convert to char array. Swap characters from both ends. string str = "dotnet";
char[] chars = str.ToCharArray();
int left = 0, right = chars.Length - 1; while (left < right) {
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp; left++; right--; }
string reversed = new string(chars);
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public double Power(double x, int n) { if (n == 0) return 1; double half = Power(x, n / 2); if (n % 2 == 0) return half * half; else return n > 0 ? x * half * half : (half * half) / x; } Explanation: Uses fast exponentiation (divide and conquer) to calculate x^n in O(log n).
public double Power(double x, int n) {
if (n == 0) return 1;
double half = Power(x, n / 2);
if (n % 2 == 0)
return half * half; else return n > 0 ? x * half * half : (half * half) / x;
} Explanation: Uses fast exponentiation (divide and conquer) to calculate x^n in O(log n).
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: t j return IsMatchHelper(s, p, i, j + 2) || (firstMatch && IsMatchHelper(s, p, i + 1, j)); } else { return firstMatch && IsMatchHelper(s, p, i + 1, j + 1); } Follow on: } Explanation: Recursively matches strings supporting '.' (any char) and '*' (zero or more of preceding).
t j return IsMatchHelper(s, p, i, j + 2) || (firstMatch && IsMatchHelper(s, p, i + 1, j)); } else { return firstMatch && IsMatchHelper(s, p, i + 1, j + 1); } Follow on: } Explanation: Recursively matches strings supporting '.' (any char) and '*' (zero or more of preceding). t j return IsMatchHelper(s, p, i, j + 2) || (firstMatch && IsMatchHelper(s, p, i + 1, j)); } else { return firstMatch && IsMatchHelper(s, p, i + 1, j + 1); } Follow on: } Explanation: Recursively matches strings supporting '.' (any char) and '*' (zero or more of preceding).
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
C# Coding Interview C# Programming Tutorial · Coding
Short answer: public bool HaveOppositeSigns(int x, int y) { return (x ^ y) < 0; } Explanation: XOR of two numbers with opposite signs has the sign bit set (negative number).
public bool HaveOppositeSigns(int x, int y) {
return (x ^ y) < 0;
} Explanation: XOR of two numbers with opposite signs has the sign bit set (negative number).
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).