Write a member function named countDuplicates
that could be added to the LinkedIntList
class.
Your function should return the number of duplicates in a sorted list.
Your code should assume that the list's elements will be in sorted order, so that all duplicates will be grouped together.
For example, if a variable named list
stores the following sequence of values, the call of list.countDuplicates()
should return 7
because there are 2 duplicates of 1
, 1 duplicate of 3
, 1 duplicate of 15
, 2 duplicates of 23
and 1 duplicate of 40
:
{1, 1, 1, 3, 3, 6, 9, 15, 15, 23, 23, 23, 40, 40}
Constraints:
Do not call any methods of the LinkedIntList
class.
Do not construct any new ListNode
objects in solving this problem (though you may create as many ListNode*
pointer variables as you like).
Do not use any auxiliary data structures to solve this problem (no array, vector, stack, queue, string, etc).
Your member function should not modify the linked list's state; the state of the list should remain constant with respect to your function.
You should declare the function to indicate this to the caller.
Write the member function as it would appear in LinkedIntList.cpp
.
You do not need to declare the function header that would appear in LinkedIntList.h
.
Assume that you are adding this method to the LinkedIntList
class as defined below:
class LinkedIntList {
private:
ListNode* front; // nullptr for an empty list
...
};
struct ListNode {
int data;
ListNode* next;
};