56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package top100liked
|
||
|
||
import (
|
||
"testing"
|
||
)
|
||
|
||
// https://leetcode.cn/problems/sort-colors/?envType=study-plan-v2&envId=top-100-liked
|
||
// 75. 颜色分类
|
||
//
|
||
// 给定一个包含红色、白色和蓝色、共 `n` 个元素的数组 `nums` ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
|
||
// 我们使用整数 `0`、 `1` 和 `2` 分别表示红色、白色和蓝色。
|
||
// 必须在不使用库内置的 sort 函数的情况下解决这个问题。
|
||
// 示例 1:
|
||
// 输入:nums = [2,0,2,1,1,0]
|
||
// 输出:[0,0,1,1,2,2]
|
||
// 示例 2:
|
||
// 输入:nums = [2,0,1]
|
||
// 输出:[0,1,2]
|
||
//
|
||
// 提示:
|
||
// - `n == nums.length`
|
||
// - `1 <= n <= 300`
|
||
// - `nums[i]` 为 `0`、`1` 或 `2`
|
||
// 进阶:
|
||
// - 你能想出一个仅使用常数空间的一趟扫描算法吗?
|
||
//
|
||
func sortColors(nums []int) {
|
||
|
||
}
|
||
|
||
func TestSortColors(t *testing.T) {
|
||
cases := []struct {
|
||
name string
|
||
nums []int
|
||
want []int
|
||
}{
|
||
{"example1", []int{2, 0, 2, 1, 1, 0}, []int{0, 0, 1, 1, 2, 2}},
|
||
{"example2", []int{2, 0, 1}, []int{0, 1, 2}},
|
||
}
|
||
for _, c := range cases {
|
||
t.Run(c.name, func(t *testing.T) {
|
||
sortColors(c.nums)
|
||
if len(c.nums) != len(c.want) {
|
||
t.Errorf("got %v, want %v", c.nums, c.want)
|
||
return
|
||
}
|
||
for i := range c.nums {
|
||
if c.nums[i] != c.want[i] {
|
||
t.Errorf("got %v, want %v", c.nums, c.want)
|
||
return
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|