Optimal Algorithmic Approach
Backtracking with sort + duplicate-skip condition.
Core Invariants & Edge Cases
- Sort, then use backtracking with a used[] boolean array
- Skip if nums[i] == nums[i-1] and !used[i-1] (avoid duplicate branches)
- Swap-based approach (without sorting) for no duplicates