
SPACE & TIME TRADE-OFFS
Real-Life Situation/Scenerio: Finding duplicate elements in an array.
In many applications, especially those dealing with large datasets, it's often necessary to identify duplicate elements within an array efficiently. This problem arises in various scenarios such as data validation, duplicate record detection, and duplicate file identification. Implementing an algorithm that can find duplicate elements while minimizing both time and space complexities is crucial for optimizing performance.


ALGORITHM DESIGN
Using a HashSet is a common approach to finding duplicate elements in an array with a space-time trade-off. By storing elements in a HashSet, we can quickly determine whether an element has been encountered before. This approach offers a time complexity of O(n) and a space complexity of O(n), making it efficient for large datasets.
Why HashSet
-
Constant-time Lookup: HashSet allows for constant-time average case complexity for membership testing. This means that checking whether an element is in the HashSet or not takes the same amount of time, regardless of the size of the HashSet.
-
Elimination of Duplicates: HashSet automatically eliminates duplicates when adding elements. If an element is already present in the HashSet, it won't be added again. This property simplifies the duplicate detection process, as we only need to check whether an element has been encountered before.
-
Optimal Time and Space Complexity: By leveraging HashSet, we achieve linear time complexity (O(n)) and linear space complexity (O(n)), where n is the number of elements in the array. This trade-off ensures efficient duplicate detection without consuming excessive memory.
PSEUDOCODE
function insertionSort(video_files):
for i from 1 to length(video_files) - 1:
key = video_files[i]
j = i - 1
while j >= 0 and video_files[j] > key:
video_files[j + 1] = video_files[j]
j = j - 1
video_files[j + 1] = key
MAIN CODE

MAIN CODE OUTPUT

TIME COMPLEXITY
he time complexity of this algorithm is O(n), where n is the number of elements in the array. It iterates through the array once to check for duplicates. The space complexity is also O(n) since the HashSet stores unique elements from the array.
REFLECTION
GAINED KNOWLEDGE
During the midterm period, I gained knowledge about Space and Time Trade-offs, particularly focusing on techniques for optimizing algorithms by balancing space and time complexities. I learned about data structures such as HashSet and their applications in efficiently solving problems like finding duplicate elements in an array.