leetcode first missing positive - uses constant space