**Problem Statement:**
Given an unsorted integer array `nums`. Return the smallest positive integer that is not present in `nums`. You must implement an algorithm that runs in `O(n)` time and uses `O(1)` auxiliary space.
**Hint / Expected Approach:**
Cyclic sort / index-as-hash trick
**Edge Cases to Consider:**
- (1) Array of all negatives
- (2) Consecutive 1–n (answer is n+1)
- (3) Duplicates present