Bird
Raised Fist0
DSA Goprogramming~5 mins

Count Occurrences of Element in Sorted Array in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main advantage of using a sorted array to count occurrences of an element?
A sorted array allows us to use binary search to find the first and last positions of the element quickly, making the counting efficient.
Click to reveal answer
intermediate
How do you find the first occurrence of an element in a sorted array?
Use binary search to find the element, but when found, continue searching to the left half to find the earliest index where the element appears.
Click to reveal answer
beginner
How do you calculate the count of an element once you have the first and last occurrence indices?
Count = (last occurrence index - first occurrence index) + 1
Click to reveal answer
beginner
Why is linear search not efficient for counting occurrences in a sorted array?
Linear search checks each element one by one, which takes O(n) time, while binary search uses the sorted property to reduce time to O(log n).
Click to reveal answer
intermediate
What is the time complexity of counting occurrences of an element in a sorted array using binary search?
O(log n) because binary search is used twice to find the first and last occurrences.
Click to reveal answer
What is the first step to count occurrences of an element in a sorted array?
AFind the first occurrence of the element using binary search
BCount elements by scanning the whole array
CSort the array first
DFind the maximum element
If the first occurrence of element 5 is at index 2 and last occurrence is at index 4, what is the count?
A4
B2
C3
D5
Which search method is best for counting occurrences in a sorted array?
ALinear search
BBreadth-first search
CDepth-first search
DBinary search
What happens if the element is not found in the array?
ACount is zero
BCount is one
CCount is array length
DCount is negative
How many times do we perform binary search to count occurrences?
AOnce
BTwice
CThree times
DFour times
Explain how to count occurrences of an element in a sorted array using binary search.
Think about finding boundaries of the element's positions.
You got /4 concepts.
    Why is binary search preferred over linear search for counting occurrences in a sorted array?
    Consider time complexity and array order.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main advantage of using a binary search approach to count occurrences of an element in a sorted array?
      easy
      A. It counts all elements without searching.
      B. It sorts the array automatically.
      C. It reduces the search time to logarithmic complexity.
      D. It works only on unsorted arrays.

      Solution

      1. Step 1: Understand binary search efficiency

        Binary search divides the search space in half each time, making it faster than linear search.
      2. Step 2: Apply to counting occurrences

        By finding the first and last positions of the element, we can count occurrences efficiently.
      3. Final Answer:

        It reduces the search time to logarithmic complexity. -> Option C
      4. Quick Check:

        Binary search = O(log n) time [OK]
      Hint: Binary search halves search space each step [OK]
      Common Mistakes:
      • Thinking binary search sorts the array
      • Using linear search for counting in sorted array
      • Assuming binary search works on unsorted arrays
      2. Which Go code snippet correctly declares a function to count occurrences of an integer in a sorted slice?
      easy
      A. func countOccurrences(arr []int, target int) int { return 0 }
      B. func countOccurrences(arr int[], target int) int { return 0 }
      C. func countOccurrences(arr []int, target int) string { return "0" }
      D. func countOccurrences(arr []int, target int) { return 0 }

      Solution

      1. Step 1: Check function signature syntax

        In Go, slices are declared as []int, and return type int is correct for count.
      2. Step 2: Validate return statement matches return type

        Returning 0 as int matches the return type int.
      3. Final Answer:

        func countOccurrences(arr []int, target int) int { return 0 } -> Option A
      4. Quick Check:

        Correct Go function syntax [OK]
      Hint: Use []int for slices and match return type [OK]
      Common Mistakes:
      • Using array syntax int[] instead of []int
      • Mismatching return type and return value
      • Omitting return type in function signature
      3. What will be the output of the following Go code snippet?
      func countOccurrences(arr []int, target int) int {
          left := 0
          right := len(arr) - 1
          first := -1
          for left <= right {
              mid := (left + right) / 2
              if arr[mid] == target {
                  first = mid
                  right = mid - 1
              } else if arr[mid] < target {
                  left = mid + 1
              } else {
                  right = mid - 1
              }
          }
          if first == -1 {
              return 0
          }
          left = 0
          right = len(arr) - 1
          last := -1
          for left <= right {
              mid := (left + right) / 2
              if arr[mid] == target {
                  last = mid
                  left = mid + 1
              } else if arr[mid] < target {
                  left = mid + 1
              } else {
                  right = mid - 1
              }
          }
          return last - first + 1
      }
      
      func main() {
          arr := []int{1, 2, 2, 2, 3, 4, 5}
          count := countOccurrences(arr, 2)
          fmt.Println(count)
      }
      medium
      A. 2
      B. 3
      C. 1
      D. 0

      Solution

      1. Step 1: Find first occurrence of 2

        Binary search finds first index of 2 at position 1.
      2. Step 2: Find last occurrence of 2

        Binary search finds last index of 2 at position 3.
      3. Step 3: Calculate count

        Count = last - first + 1 = 3 - 1 + 1 = 3.
      4. Final Answer:

        3 -> Option B
      5. Quick Check:

        Occurrences of 2 = 3 [OK]
      Hint: Find first and last index, then subtract [OK]
      Common Mistakes:
      • Returning index instead of count
      • Not updating left/right correctly in binary search
      • Confusing first and last occurrence indices
      4. Identify the bug in the following Go function that counts occurrences of a target in a sorted array:
      func countOccurrences(arr []int, target int) int {
          left, right := 0, len(arr)-1
          count := 0
          for left <= right {
              mid := (left + right) / 2
              if arr[mid] == target {
                  count++
                  break
              } else if arr[mid] < target {
                  left = mid + 1
              } else {
                  right = mid - 1
              }
          }
          return count
      }
      medium
      A. It counts only one occurrence, not all.
      B. It causes an infinite loop.
      C. It returns the index instead of count.
      D. It does not handle empty arrays.

      Solution

      1. Step 1: Analyze loop behavior

        The loop breaks after finding one occurrence, so count increments only once.
      2. Step 2: Understand counting logic

        Counting all occurrences requires searching for first and last positions, not just one match.
      3. Final Answer:

        It counts only one occurrence, not all. -> Option A
      4. Quick Check:

        Loop breaks early, count = 1 [OK]
      Hint: Break stops counting after first match [OK]
      Common Mistakes:
      • Using break instead of continuing search
      • Not searching for first and last indices
      • Assuming one match equals total count
      5. Given a sorted array with possible duplicates, how would you modify the binary search approach to count occurrences of multiple target values efficiently? Choose the best approach.
      hard
      A. Perform separate binary searches for first and last occurrences of each target, then sum counts.
      B. Use a linear scan for each target to count occurrences.
      C. Sort the array again before counting each target.
      D. Use a hash map to store counts after one full scan.

      Solution

      1. Step 1: Consider efficiency for multiple targets

        Binary search per target is O(k log n) for k targets, which can be costly.
      2. Step 2: Use hash map after one scan

        A single linear scan builds a map of counts for all elements in O(n), allowing O(1) lookup per target.
      3. Step 3: Compare approaches

        Hash map approach is more efficient for multiple queries than repeated binary searches.
      4. Final Answer:

        Use a hash map to store counts after one full scan. -> Option D
      5. Quick Check:

        Hash map = efficient multiple counts [OK]
      Hint: Build counts once, then query fast [OK]
      Common Mistakes:
      • Repeating binary search for each target
      • Sorting array multiple times unnecessarily
      • Ignoring hash map for frequency counting
      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