warriorprincess
07/10/2018, 10:56 AMfun threeSum(numss: IntArray): List<List<Int>> { // O(N^2) with hash table
var nums = numss.sorted()
val map = nums.mapIndexed{ i, n -> n to i }.toMap()
var result = arrayListOf<List<Int>>()
for (i in 0 until nums.size)
for (j in i until nums.size) {
val third = -1*(nums[i]+nums[j]); val k = map[third]
if (map.containsKey(third) && i != j && j != k && i != k && k!! >= j) result.add(listOf(nums[i], nums[j], third))
}
return result.distinct()
}