面试题答案
一键面试package main
import (
"fmt"
)
func hasAccess(age int, region string, balance float64, loginCount int) bool {
regions := map[string]bool{
"北京": true,
"上海": true,
"广州": true,
}
return age > 18 && regions[region] && balance > 100 && loginCount > 5
}
func main() {
// 示例数据
age := 20
region := "北京"
balance := 150.0
loginCount := 6
if hasAccess(age, region, balance, loginCount) {
fmt.Println("用户满足特定访问权限")
} else {
fmt.Println("用户不满足特定访问权限")
}
}
优化思路说明:
- 使用map判断地区:对于判断地区是否在指定列表中,使用map来存储地区信息,其查找时间复杂度为O(1),相比使用切片遍历判断(时间复杂度O(n))更加高效,特别是当地区列表很长时优势明显。
- 逻辑判断顺序:在
hasAccess
函数中,先判断最可能不满足条件的部分(例如年龄,因为年龄大于18岁相对其他条件更可能不满足),这样可以在早期就返回false
,减少不必要的判断,提高整体效率。