|
import org.junit.jupiter.api.Assertions.assertEquals |
|
import org.junit.jupiter.api.Test |
|
import kotlin.test.assertContentEquals |
|
|
|
class TwoPointersTest { |
|
class Solution { |
|
fun removeElement(nums: IntArray, `val`: Int): Int { |
|
var count = 0 |
|
for (i in 0..<nums.size) { |
|
if (nums[i] != `val`) { |
|
nums[count++] = nums[i] |
|
} |
|
} |
|
return count |
|
} |
|
} |
|
|
|
@Test |
|
fun tests() { |
|
val scenarios = setOf<Array<Any>>( |
|
arrayOf(2, intArrayOf(2, 2), intArrayOf(3, 2, 2, 3), 3), |
|
arrayOf(5, intArrayOf(0, 1, 3, 0, 4), intArrayOf(0, 1, 2, 2, 3, 0, 4, 2), 2), |
|
arrayOf(0, intArrayOf(), intArrayOf(1, 1, 1, 1), 1), |
|
arrayOf(1, intArrayOf(1), intArrayOf(1, 2, 2, 2), 2), |
|
arrayOf(1, intArrayOf(1), intArrayOf(2, 2, 2, 1), 2), |
|
arrayOf(0, intArrayOf(), intArrayOf(2), 2), |
|
arrayOf(1, intArrayOf(2), intArrayOf(2), 1), |
|
) |
|
scenarios.forEach { (result, expectedNums, nums, `val`) -> |
|
assertEquals( |
|
result as Int, |
|
Solution().removeElement(nums as IntArray, `val` as Int), |
|
"$result -> $nums, $`val`", |
|
) |
|
assertContentEquals(expectedNums as IntArray, nums.copyOfRange(0, result)) |
|
} |
|
} |
|
} |