442.find-all-duplicates-in-an-array.go 299 B

123456789101112131415161718
  1. func findDuplicates(nums []int) (res []int) {
  2. n := len(nums)
  3. for i := 0; i < n; i++ {
  4. if idx := abs(nums[i]) - 1; nums[idx] < 0 {
  5. res = append(res, idx+1) // Twice
  6. } else {
  7. nums[idx] = -nums[idx] // Once
  8. }
  9. }
  10. return res
  11. }
  12. func abs(x int) int {
  13. if x < 0 {
  14. return -x
  15. }
  16. return x
  17. }