一、题目
二、思路
需要转换思维,看本质。
sandwitches 数组头部的值域为 0 或 1。当值为 x 时,若 students 数组已无喜欢 x 的值时则终止。
因此,可用 s0 表示 students 中喜欢 0 的学生数量;用 s1 表示 students 中喜欢 1 的学生数量。
当 sandwitches[0] 为 x 时,若 sx > 0 时则仍有学生能领走三明治;若 sx == 0 是则终止。
三、题解
func countStudents(students []int, sandwiches []int) int {
s1 := 0
total := 0
for _, v := range students {
total++
s1 += v
}
s0 := total - s1
for _, v := range sandwiches {
if v == 0 && s0 > 0 {
s0--
} else if v == 1 && s1 > 0 {
s1--
} else {
break
}
}
return s0+s1
}