Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

First and Last Occurrence of Element in DSA Typescript - Execution Trace

Choose your learning style10 modes available
Concept Flow - First and Last Occurrence of Element
Start
↓
Initialize first = -1, last = -1
↓
Traverse array from i=0 to end
↓
Check if array[i
↓
If first == -1, set first = i
↓
Set last = i
↓
Continue traversal
↓
End traversal
↓
Return first and last indices
↓
Done
We scan the array once, updating first and last positions when we find the target element.
Execution Sample
DSA Typescript
function findFirstLast(arr: number[], target: number): [number, number] {
  let first = -1;
  let last = -1;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === target) {
      if (first === -1) first = i;
      last = i;
    }
  }
  return [first, last];
}
This code finds the first and last positions of the target number in the array.
Execution Table
StepOperationIndex iarr[i]Condition arr[i] == targetfirstlastVisual State
1Initialize first and last----1-1first = -1, last = -1
2Check element05No-1-1No change
3Check element13Yes11first = 1, last = 1
4Check element27No11No change
5Check element33Yes13last updated to 3
6Check element49No13No change
7Check element53Yes15last updated to 5
8End traversal---15Return [1, 5]
💡 Reached end of array, traversal stops
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6After Step 7Final
first-1-1111111
last-1-1113355
i-012345-
Key Moments - 3 Insights
Why do we check if first == -1 before setting it?
Because first should store the earliest index where target appears. We only set it once at the first occurrence (see Step 3 in execution_table).
Why do we update last every time we find the target?
Because last should always point to the most recent occurrence of the target (see Steps 3, 5, 7 in execution_table).
What if the target is not in the array at all?
Then first and last remain -1, indicating target not found (see initial values in Step 1 and no updates in execution_table).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'first' after Step 5?
A1
B3
C-1
D5
💡 Hint
Check the 'first' column in row for Step 5 in execution_table.
At which step does the condition arr[i] == target become false for the first time?
AStep 3
BStep 4
CStep 2
DStep 5
💡 Hint
Look at the 'Condition arr[i] == target' column in execution_table rows.
If the target was 7 instead of 3, what would be the final value of 'last'?
A-1
B2
C5
D3
💡 Hint
Check where 7 appears in the array and see last updates in execution_table.
Concept Snapshot
Find first and last occurrence of target in array:
- Initialize first and last to -1
- Traverse array once
- If arr[i] == target:
  - If first == -1, set first = i
  - Update last = i
- Return [first, last]
- If target not found, returns [-1, -1]
Full Transcript
This concept finds the first and last positions of a target element in an array by scanning it once. We start with first and last set to -1, meaning not found. As we move through the array, when we find the target for the first time, we set first to that index. Every time we find the target, we update last to that index. After scanning all elements, we return the two indices. If the target is not found, both remain -1. The execution table shows each step with index, element checked, condition result, and updates to first and last. This helps visualize how the pointers move and how the final result is formed.

Practice

(1/5)
1. What does the "First and Last Occurrence of Element" problem ask you to find in an array?
easy
A. The maximum element in the array
B. The sum of all elements in the array
C. The first and last positions where a given element appears
D. The number of unique elements in the array

Solution

  1. Step 1: Understand the problem statement

    The problem asks to find the first and last index positions of a specific element in an array.
  2. Step 2: Identify what is required

    We need to locate where the element appears first and last, not sums or counts.
  3. Final Answer:

    The first and last positions where a given element appears -> Option C
  4. Quick Check:

    First and last occurrence = positions of element [OK]
Hint: Look for positions of element, not sums or counts [OK]
Common Mistakes:
  • Confusing occurrence with sum or max
  • Thinking about unique elements instead
  • Ignoring the order of elements
2. Which of the following TypeScript function signatures correctly represents a function to find first and last occurrence of a number in an array?
easy
A. function findOccurrences(arr: number[], target: number): number
B. function findOccurrences(arr: string[], target: string): number
C. function findOccurrences(arr: number, target: number): number[]
D. function findOccurrences(arr: number[], target: number): [number, number]

Solution

  1. Step 1: Analyze the function parameters

    The function should take an array of numbers and a target number to find.
  2. Step 2: Analyze the return type

    We want to return two numbers (first and last index), so a tuple [number, number] is appropriate.
  3. Final Answer:

    function findOccurrences(arr: number[], target: number): [number, number] -> Option D
  4. Quick Check:

    Input array and target, output tuple of two indexes [OK]
Hint: Return a tuple of two numbers for first and last indexes [OK]
Common Mistakes:
  • Using wrong input types like single number instead of array
  • Returning only one number instead of two
  • Returning array of wrong type
3. What will be the output of the following TypeScript code?
function findOccurrences(arr: number[], target: number): [number, number] {
  let first = -1;
  let last = -1;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === target) {
      if (first === -1) first = i;
      last = i;
    }
  }
  return [first, last];
}

console.log(findOccurrences([5, 3, 7, 3, 9], 3));
medium
A. [1, 3]
B. [3, 3]
C. [0, 4]
D. [-1, -1]

Solution

  1. Step 1: Trace the loop to find first occurrence

    At index 1, element is 3 which matches target, so first = 1.
  2. Step 2: Update last occurrence while looping

    At index 3, element is 3 again, so last = 3.
  3. Final Answer:

    [1, 3] -> Option A
  4. Quick Check:

    First = 1, Last = 3 [OK]
Hint: Track first when found, update last every time [OK]
Common Mistakes:
  • Returning first occurrence twice
  • Returning indexes of wrong elements
  • Not updating last occurrence properly
4. Identify the bug in this TypeScript function to find first and last occurrence:
function findOccurrences(arr: number[], target: number): [number, number] {
  let first = 0;
  let last = 0;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === target) {
      if (first === 0) first = i;
      last = i;
    }
  }
  return [first, last];
}
medium
A. last should be initialized to -1 instead of 0
B. first initialized to 0 causes wrong first occurrence when target is at index 0
C. Loop should start from 1 instead of 0
D. Missing return type annotation

Solution

  1. Step 1: Check initialization of first

    first is set to 0, so if target is at index 0, condition first === 0 is true initially, causing incorrect logic.
  2. Step 2: Understand impact on first occurrence

    If target is at index 0, first will never update correctly because first === 0 is true initially, so first stays 0 even if target not found.
  3. Final Answer:

    first initialized to 0 causes wrong first occurrence when target is at index 0 -> Option B
  4. Quick Check:

    Initialize first to -1 to fix [OK]
Hint: Initialize first to -1 to detect if target found [OK]
Common Mistakes:
  • Initializing first to 0 instead of -1
  • Not handling target at index 0 correctly
  • Assuming first occurrence is always > 0
5. Given a sorted array with possible duplicates, which approach is the most efficient to find the first and last occurrence of a target element?
hard
A. Use two binary searches: one for first occurrence, one for last occurrence
B. Traverse the array from start to end to find first and last occurrence
C. Sort the array again and then find the element
D. Use a hash map to store all occurrences and then find first and last

Solution

  1. Step 1: Understand the array is sorted

    Since the array is sorted, binary search can be used to find elements efficiently.
  2. Step 2: Use binary search twice

    One binary search finds the first occurrence, another finds the last occurrence, both in O(log n) time.
  3. Step 3: Compare with other options

    Traversing is O(n), sorting again is unnecessary, hash map uses extra space and is less efficient.
  4. Final Answer:

    Use two binary searches: one for first occurrence, one for last occurrence -> Option A
  5. Quick Check:

    Binary search twice = efficient for sorted arrays [OK]
Hint: Use binary search twice for first and last positions [OK]
Common Mistakes:
  • Using linear search on sorted array
  • Sorting array again unnecessarily
  • Using extra space with hash map
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard