Bird
Raised Fist0
DSA C++programming~10 mins

First and Last Occurrence of Element in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to find the first occurrence of 'target' in the array.

DSA C++
int firstOccurrence(vector<int>& arr, int target) {
    for (int i = 0; i < arr.size(); i++) {
        if (arr[i] == [1]) {
            return i;
        }
    }
    return -1;
}
Drag options to blanks, or click blank then click option'
Aarr[i]
Btarget
Ci
Darr.size()
Attempts:
3 left
💡 Hint
Common Mistakes
Using arr.size() instead of target in the if condition.
Comparing i with target instead of arr[i].
2fill in blank
medium

Complete the code to find the last occurrence of 'target' in the array.

DSA C++
int lastOccurrence(vector<int>& arr, int target) {
    for (int i = arr.size() - 1; i >= 0; i--) {
        if (arr[i] == [1]) {
            return i;
        }
    }
    return -1;
}
Drag options to blanks, or click blank then click option'
Aarr.size()
Bi
Ctarget
Darr[i]
Attempts:
3 left
💡 Hint
Common Mistakes
Using i instead of target in the if condition.
Comparing arr.size() with arr[i].
3fill in blank
hard

Fix the error in the binary search to find the first occurrence of 'target'.

DSA C++
int firstOccurrenceBinarySearch(vector<int>& arr, int target) {
    int low = 0, high = arr.size() - 1, result = -1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (arr[mid] == [1]) {
            result = mid;
            high = mid - 1;
        } else if (arr[mid] < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return result;
}
Drag options to blanks, or click blank then click option'
Atarget
Bmid
Clow
Dhigh
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing arr[mid] with mid instead of target.
Updating wrong pointers after comparison.
4fill in blank
hard

Fill both blanks to complete the binary search for the last occurrence of 'target'.

DSA C++
int lastOccurrenceBinarySearch(vector<int>& arr, int target) {
    int low = 0, high = arr.size() - 1, result = -1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (arr[mid] == [1]) {
            result = mid;
            low = mid [2] 1;
        } else if (arr[mid] < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return result;
}
Drag options to blanks, or click blank then click option'
Atarget
Bhigh
C+
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-' instead of '+' when updating low pointer.
Comparing arr[mid] with high instead of target.
5fill in blank
hard

Fill all three blanks to create a function that returns both first and last occurrences of 'target'.

DSA C++
pair<int, int> findFirstAndLast(vector<int>& arr, int target) {
    int first = -1, last = -1;
    int low = 0, high = arr.size() - 1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (arr[mid] == [1]) {
            first = mid;
            high = mid [2] 1;
        } else if (arr[mid] < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    low = 0; high = arr.size() - 1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (arr[mid] == [3]) {
            last = mid;
            low = mid + 1;
        } else if (arr[mid] < target) {
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    return {first, last};
}
Drag options to blanks, or click blank then click option'
Atarget
B-
C+
Dmid
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' instead of '-' when updating high pointer in first search.
Mixing up target and mid in comparisons.

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 and minimum elements 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 positions of a specific element in an array.
  2. Step 2: Identify what is required

    We need to locate the earliest and latest index where the element appears.
  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 earliest and latest index of element [OK]
Common Mistakes:
  • Confusing with sum or max/min of array
  • Returning count instead of positions
  • Ignoring if element is not present
2. Which of the following C++ code snippets correctly finds the first occurrence of element x in vector arr?
easy
A. int first = 0; while(arr[first] != x) { first++; }
B. int first = -1; for(int i=0; i
C. int first = arr.size(); for(int i=0; i
D. int first = -1; for(int i=arr.size()-1; i>=0; i--) { if(arr[i] == x) { first = i; break; } }

Solution

  1. Step 1: Check each option for correctness

    int first = -1; for(int i=0; i
  2. Step 2: Identify errors in other options

    int first = 0; while(arr[first] != x) { first++; } may cause out-of-bound error if x not found; int first = arr.size(); for(int i=0; i=0; i--) { if(arr[i] == x) { first = i; break; } } finds last occurrence due to reverse loop.
  3. Final Answer:

    int first = -1; for(int i=0; i -> Option B
  4. Quick Check:

    Loop from start, break on first match = first occurrence [OK]
Hint: Loop forward, break on first match for first occurrence [OK]
Common Mistakes:
  • Looping backward for first occurrence
  • Not handling element not found case
  • Using wrong initial index values
3. What will be the output of the following C++ code?
std::vector<int> arr = {2, 3, 5, 3, 7};
int x = 3;
int first = -1, last = -1;
for(int i=0; i<arr.size(); i++) {
  if(arr[i] == x) {
    if(first == -1) first = i;
    last = i;
  }
}
std::cout << first << " " << last << std::endl;
medium
A. 2 3
B. 0 4
C. 1 1
D. 1 3

Solution

  1. Step 1: Trace the loop to find first and last occurrence of 3

    Indices: 0->2, 1->3, 2->5, 3->3, 4->7. First 3 at index 1, last 3 at index 3.
  2. Step 2: Confirm output printed

    Prints first and last indices: 1 3.
  3. Final Answer:

    1 3 -> Option D
  4. Quick Check:

    First=1, Last=3 for element 3 [OK]
Hint: Track first set once, update last on every match [OK]
Common Mistakes:
  • Confusing indices with values
  • Not updating last occurrence correctly
  • Printing values instead of indices
4. Identify the bug in this code snippet that tries to find the last occurrence of x in arr:
int last = -1;
for(int i=0; i<arr.size(); i++) {
  if(arr[i] = x) {
    last = i;
  }
}
medium
A. Using assignment (=) instead of comparison (==) in if condition
B. Loop should run backwards from end to start
C. Variable last should be initialized to 0
D. Missing break statement after finding last occurrence

Solution

  1. Step 1: Check the if condition

    The condition uses single '=' which assigns x to arr[i], not compares.
  2. Step 2: Understand impact of assignment in condition

    Assignment returns value of x, which may cause wrong behavior or infinite loop.
  3. Final Answer:

    Using assignment (=) instead of comparison (==) in if condition -> Option A
  4. Quick Check:

    Use '==' for comparison, not '=' [OK]
Hint: Use '==' for comparison, '=' is assignment [OK]
Common Mistakes:
  • Confusing '=' and '==' in conditions
  • Thinking loop direction causes bug here
  • Assuming break needed for last occurrence
5. Given a sorted vector arr and an element x, which approach is the most efficient to find the first and last occurrence of x?
hard
A. Use binary search twice to find first and last positions
B. Use linear search from start to end
C. Sort the array again and then find occurrences
D. Use a hash map to store all indices of elements

Solution

  1. Step 1: Understand the array is sorted

    Sorted array allows binary search to find elements efficiently.
  2. Step 2: Use binary search twice

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

    Linear search is O(n), sorting again is unnecessary, hash map adds extra space and complexity.
  4. Final Answer:

    Use binary search twice to find first and last positions -> Option A
  5. Quick Check:

    Sorted array + binary search = efficient first/last occurrence [OK]
Hint: Binary search twice on sorted array for first and last occurrence [OK]
Common Mistakes:
  • Using linear search on sorted array
  • Sorting array again unnecessarily
  • Ignoring binary search advantages
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