Bird
Raised Fist0
DSA Cprogramming~3 mins

Why First and Last Occurrence of Element in DSA C?

Choose your learning style10 modes available
The Big Idea

What if you could instantly find where something appears first and last in a huge list without missing a beat?

The Scenario

Imagine you have a long list of names written on paper, and you want to find where a particular name appears first and last. You start scanning from the top, marking every time you see that name. This takes a lot of time and you might miss some spots if you lose focus.

The Problem

Manually scanning through a list is slow and tiring. You can easily forget where you saw the name first or last. If the list is very long, it becomes almost impossible to keep track without making mistakes.

The Solution

Using a simple program to find the first and last occurrence of an element in a list saves time and avoids errors. The program quickly scans the list once and remembers the positions, so you get accurate results instantly.

Before vs After
✗ Before
int i;
for(i = 0; i < n; i++) {
  if(arr[i] == x) {
    printf("Found at %d\n", i);
  }
}
✓ After
int first = -1, last = -1;
for(int i = 0; i < n; i++) {
  if(arr[i] == x) {
    if(first == -1) first = i;
    last = i;
  }
}
printf("First: %d, Last: %d\n", first, last);
What It Enables

This lets you quickly find the exact start and end positions of any item in a list, enabling fast searches and data analysis.

Real Life Example

In a library database, finding the first and last time a book was borrowed helps track its popularity over time.

Key Takeaways

Manually searching is slow and error-prone.

Programmatic search finds first and last positions efficiently.

This method helps in quick data lookup and analysis.

Practice

(1/5)
1. What does the term first occurrence of an element in an array mean?
easy
A. The last index where the element appears
B. The total count of the element in the array
C. The index of the first time the element appears in the array
D. The sum of all elements before the element

Solution

  1. Step 1: Understand the meaning of first occurrence

    The first occurrence means the earliest position where the element is found in the array, starting from index 0.
  2. Step 2: Compare options with definition

    The index of the first time the element appears in the array matches this definition exactly, while others describe different concepts.
  3. Final Answer:

    The index of the first time the element appears in the array -> Option C
  4. Quick Check:

    First occurrence = first index found [OK]
Hint: First occurrence means earliest index found [OK]
Common Mistakes:
  • Confusing first occurrence with count of element
  • Mixing first occurrence with last occurrence
  • Thinking it means sum or total
2. Which of the following C code snippets correctly finds the first occurrence of x in array arr of size n?
easy
A. for(int i=0; i
B. for(int i=n-1; i>=0; i--) { if(arr[i] == x) return i; } return -1;
C. int i=0; while(arr[i] != x) i++; return i;
D. for(int i=0; i

Solution

  1. Step 1: Analyze each code snippet

    for(int i=0; i
  2. Step 2: Check other options for correctness

    for(int i=n-1; i>=0; i--) { if(arr[i] == x) return i; } return -1; searches from end, so it finds last occurrence. int i=0; while(arr[i] != x) i++; return i; may cause out-of-bound error if x not found. for(int i=0; i
  3. Final Answer:

    for(int i=0; i -> Option A
  4. Quick Check:

    Start to end loop with match check = for(int i=0; i
Hint: Loop from start, return index on first match [OK]
Common Mistakes:
  • Looping backward for first occurrence
  • Not handling element not found case
  • Returning wrong index when element differs
3. What will be the output of the following C code?
int arr[] = {2, 4, 6, 4, 8};
int n = 5, x = 4;
int first = -1, last = -1;
for(int i=0; i
medium
A. 1 3
B. 3 1
C. 0 4
D. -1 -1

Solution

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

    Array: [2,4,6,4,8], x=4. Loop i=0 to 4:
    i=0: arr[0]=2 !=4, skip
    i=1: arr[1]=4 ==4, first=-1 so first=1, last=1
    i=2: arr[2]=6 !=4, skip
    i=3: arr[3]=4 ==4, first=1 (unchanged), last=3
    i=4: arr[4]=8 !=4, skip
  2. Step 2: Print first and last

    first=1, last=3
  3. Final Answer:

    1 3 -> Option A
  4. Quick Check:

    First=1, Last=3 indexes for 4 [OK]
Hint: Track first when unset, update last on every match [OK]
Common Mistakes:
  • Swapping first and last values
  • Not updating last occurrence
  • Ignoring first occurrence initialization
4. Identify the error in the following code that tries to find the last occurrence of x in array arr of size n:
int lastOccurrence(int arr[], int n, int x) {
  int last = -1;
  for(int i=0; i
medium
A. Loop should run from n-1 to 0 for last occurrence
B. Using assignment (=) instead of comparison (==) in if condition
C. Variable last should be initialized to 0
D. Return statement should be inside the loop

Solution

  1. Step 1: Check the if condition inside the loop

    The condition uses single '=' which is assignment, not comparison. This causes wrong behavior.
  2. Step 2: Correct the condition

    It should be 'if(arr[i] == x)' to compare values properly.
  3. Final Answer:

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

    Use '==' for comparison, not '=' [OK]
Hint: Use '==' for comparison, '=' is assignment [OK]
Common Mistakes:
  • Using '=' instead of '==' in conditions
  • Loop direction confusion for last occurrence
  • Wrong initialization of variables
5. Given a sorted array arr of size n with possible duplicates, which approach is the most efficient to find the first and last occurrence of element x?
hard
A. Sort the array again and then find occurrences
B. Traverse the array from start to end once to find both occurrences
C. Use linear search twice: once from start, once from end
D. Use two binary searches: one for first occurrence, one for last occurrence

Solution

  1. Step 1: Understand the array is sorted

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

    One binary search finds the first occurrence by moving left on matches, another finds last occurrence by moving right on matches.
  3. Final Answer:

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

    Sorted array + binary search = fastest method [OK]
Hint: Use binary search twice on sorted array [OK]
Common Mistakes:
  • Using linear search on sorted array (slow)
  • Sorting array again unnecessarily
  • Not using binary search for efficiency
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