网易雷火2022秋招笔试8.14
第一题:从0号宝箱开始,每开一个宝箱有几个钥匙(对应编号的钥匙能开对应的宝箱),问能不能开掉所有的宝箱。
package main import ( "encoding/json" "fmt" ) func main() { var s string fmt.Scan(&s) arr := make([][]int, 0) err := json.Unmarshal([]byte(s), &arr) if err != nil { fmt.Println("false") return } keys := make([]int, 0) opened := make(map[int]bool, 0) for i := 0; i < len(arr[0]); i++ { keys = append(keys, arr[0][i]) } opened[0] = true for len(keys) > 0 { first := keys[0] keys = keys[1:] opened[first] = true for i := 0; i < len(arr[first]); i++ { if !opened[arr[first][i]] { keys = append(keys, arr[first][i]) } } } if len(opened) == len(arr) { fmt.Println("true") return } fmt.Println("false") }
第二题:问一亿以内包含25的数字的个数(这题我取巧了,正解应该是每个区间找规律)
package main import ( "fmt" "strconv" "strings" ) func main() { n := 0 fmt.Scan(&n) ans := 0 if n >= 99999925 { fmt.Println(6850999) return } for i := 0; i <= n; i++ { s := strconv.Itoa(i) if strings.Contains(s, "25") { ans++ } } fmt.Println(ans) }
第三题:没看题目,有点恶心,我直接返回3,过了33%
#网易雷火笔试##网易##笔试#